Commit d43708c1 authored by Michal Čihař's avatar Michal Čihař

Include quotes specific for language in special chars

Fixes #406
Signed-off-by: default avatarMichal Čihař <michal@cihar.com>
parent de4556a0
...@@ -102,7 +102,7 @@ class PluralTextarea(forms.Textarea): ...@@ -102,7 +102,7 @@ class PluralTextarea(forms.Textarea):
# Special chars # Special chars
chars = [] chars = []
for name, char in get_special_chars(): for name, char in get_special_chars(language):
chars.append( chars.append(
BUTTON_TEMPLATE.format( BUTTON_TEMPLATE.format(
'specialchar', 'specialchar',
......
...@@ -21,18 +21,408 @@ ...@@ -21,18 +21,408 @@
Helper code to get user special chars specific for given language. Helper code to get user special chars specific for given language.
""" """
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _, ugettext_lazy
# Hard coded list of special chars
SPECIAL_CHARS = (u'→', u'↵', u'…') SPECIAL_CHARS = (u'→', u'↵', u'…')
# Names of hardcoded chars
CHAR_NAMES = { CHAR_NAMES = {
u'→': _('Insert tab character'), u'→': ugettext_lazy('Insert tab character'),
u'↵': _('Insert new line'), u'↵': ugettext_lazy('Insert new line'),
u'…': _('Insert horizontal ellipsis'), u'…': ugettext_lazy('Insert horizontal ellipsis'),
}
# Quotes definition for each language, based on CLDR data
SINGLE_OPEN = {
'ja': u'『',
'zh': u'『',
'ar': u'’',
'fi': u'’',
'fo': u'’',
'lag': u'’',
'rn': u'’',
'se': u'’',
'sn': u'’',
'sv': u'’',
'ur': u'’',
'eo': u'‘',
'vo': u'‘',
'ALL': u'‘',
'agq': u'‚',
'bs': u'‚',
'cs': u'‚',
'de': u'‚',
'dsb': u'‚',
'et': u'‚',
'ff': u'‚',
'hr': u'‚',
'hsb': u'‚',
'is': u'‚',
'ksh': u'‚',
'lb': u'‚',
'luy': u'‚',
'mk': u'‚',
'sk': u'‚',
'sl': u'‚',
'ast': u'“',
'bm': u'“',
'ca': u'“',
'cy': u'“',
'dyo': u'“',
'es': u'“',
'ewo': u'“',
'fur': u'“',
'ia': u'“',
'it': u'“',
'kab': u'“',
'mg': u'“',
'mua': u'“',
'nnh': u'“',
'nr': u'“',
'nso': u'“',
'pt': u'“',
'sg': u'“',
'sq': u'“',
'ss': u'“',
'ti': u'“',
'tn': u'“',
'ts': u'“',
've': u'“',
'bas': u'„',
'bg': u'„',
'ky': u'„',
'lt': u'„',
'os': u'„',
'ru': u'„',
'shi': u'„',
'shi': u'„',
'uk': u'„',
'zgh': u'„',
'el': u'"',
'eu': u'"',
'ur': u'\'',
'uz': u'\'',
'yi': u'\'',
'fr': u'«',
'hy': u'«',
'ka': u'«',
'nmg': u'«',
'pl': u'«',
'ro': u'«',
'yav': u'«',
'he': u'׳',
'am': u'‹',
'az': u'‹',
'be': u'‹',
'br': u'‹',
'de': u'‹',
'fa': u'‹',
'fr': u'‹',
'fr': u'‹',
'gsw': u'‹',
'it': u'‹',
'jgo': u'‹',
'kkj': u'‹',
'rm': u'‹',
'wae': u'‹',
'hu': u'»',
'kl': u'›',
'ug': u'›',
}
SINGLE_CLOSE = {
'ja': u'』',
'zh': u'』',
'eo': u'’',
'vo': u'’',
'ALL': u'’',
'ar': u'‘',
'bs': u'‘',
'cs': u'‘',
'de': u'‘',
'dsb': u'‘',
'et': u'‘',
'hr': u'‘',
'hsb': u'‘',
'is': u'‘',
'ksh': u'‘',
'lb': u'‘',
'luy': u'‘',
'mk': u'‘',
'sk': u'‘',
'sl': u'‘',
'sr': u'‘',
'sr': u'‘',
'ur': u'‘',
'ast': u'”',
'bm': u'”',
'ca': u'”',
'cy': u'”',
'dyo': u'”',
'es': u'”',
'ewo': u'”',
'fur': u'”',
'ia': u'”',
'it': u'”',
'kab': u'”',
'mg': u'”',
'mua': u'”',
'nnh': u'”',
'nr': u'”',
'nso': u'”',
'pt': u'”',
'sg': u'”',
'shi': u'”',
'shi': u'”',
'sq': u'”',
'ss': u'”',
'ti': u'”',
'tn': u'”',
'ts': u'”',
've': u'”',
'zgh': u'”',
'bas': u'“',
'bg': u'“',
'ky': u'“',
'lt': u'“',
'os': u'“',
'ru': u'“',
'uk': u'“',
'el': u'"',
'eu': u'"',
'ur': u'\'',
'uz': u'\'',
'yi': u'\'',
'hu': u'«',
'he': u'׳',
'kl': u'‹',
'ug': u'‹',
'fr': u'»',
'hy': u'»',
'ka': u'»',
'nmg': u'»',
'pl': u'»',
'ro': u'»',
'yav': u'»',
'am': u'›',
'az': u'›',
'be': u'›',
'br': u'›',
'de': u'›',
'fa': u'›',
'fr': u'›',
'fr': u'›',
'gsw': u'›',
'it': u'›',
'jgo': u'›',
'kkj': u'›',
'rm': u'›',
'wae': u'›',
}
DOUBLE_OPEN = {
'eu': u'"',
'ur': u'"',
'uz': u'"',
'yi': u'"',
'ja': u'「',
'zh': u'「',
'cy': u'‘',
'fur': u'‘',
'ia': u'‘',
'nr': u'‘',
'nso': u'‘',
'ss': u'‘',
'ti': u'‘',
'tn': u'‘',
'ts': u'‘',
've': u'‘',
'am': u'«',
'ast': u'«',
'az': u'«',
'bas': u'«',
'be': u'«',
'bm': u'«',
'br': u'«',
'ca': u'«',
'de': u'«',
'dua': u'«',
'dyo': u'«',
'el': u'«',
'es': u'«',
'ewo': u'«',
'fa': u'«',
'fr': u'«',
'gsw': u'«',
'hy': u'«',
'it': u'«',
'jgo': u'«',
'kab': u'«',
'kkj': u'«',
'ksf': u'«',
'ky': u'«',
'mg': u'«',
'mua': u'«',
'nb': u'«',
'nn': u'«',
'nnh': u'«',
'os': u'«',
'pt': u'«',
'rm': u'«',
'ru': u'«',
'rw': u'«',
'sg': u'«',
'shi': u'«',
'shi': u'«',
'sq': u'«',
'uk': u'«',
'wae': u'«',
'yav': u'«',
'zgh': u'«',
'he': u'״',
'ar': u'”',
'fi': u'”',
'fo': u'”',
'lag': u'”',
'rn': u'”',
'se': u'”',
'sn': u'”',
'sv': u'”',
'ur': u'”',
'eo': u'“',
'vo': u'“',
'ALL': u'“',
'kl': u'»',
'ug': u'»',
'agq': u'„',
'bg': u'„',
'bs': u'„',
'bs': u'„',
'cs': u'„',
'de': u'„',
'dsb': u'„',
'et': u'„',
'ff': u'„',
'hr': u'„',
'hsb': u'„',
'hu': u'„',
'is': u'„',
'ka': u'„',
'ksh': u'„',
'lb': u'„',
'lt': u'„',
'luy': u'„',
'mk': u'„',
'nmg': u'„',
'pl': u'„',
'sk': u'„',
'sl': u'„',
'sr': u'„',
'sr': u'„',
} }
DOUBLE_CLOSE = {
'eu': u'"',
'kk': u'"',
'ur': u'"',
'uz': u'"',
'yi': u'"',
'he': u'״',
'cy': u'’',
'fur': u'’',
'ia': u'’',
'nr': u'’',
'nso': u'’',
'ss': u'’',
'ti': u'’',
'tn': u'’',
'ts': u'’',
've': u'’',
'ja': u'」',
'zh': u'」',
'kl': u'«',
'ug': u'«',
'eo': u'”',
'vo': u'”',
'ALL': u'”',
'ar': u'“',
'bg': u'“',
'bs': u'“',
'bs': u'“',
'cs': u'“',
'de': u'“',
'dsb': u'“',
'et': u'“',
'hr': u'“',
'hsb': u'“',
'is': u'“',
'ka': u'“',
'ksh': u'“',
'lb': u'“',
'lt': u'“',
'luy': u'“',
'mk': u'“',
'sk': u'“',
'sl': u'“',
'sr': u'“',
'sr': u'“',
'ur': u'“',
'am': u'»',
'ast': u'»',
'az': u'»',
'bas': u'»',
'be': u'»',
'bm': u'»',
'br': u'»',
'ca': u'»',
'de': u'»',
'dua': u'»',
'dyo': u'»',
'el': u'»',
'es': u'»',
'ewo': u'»',
'fa': u'»',
'fr': u'»',
'gsw': u'»',
'hy': u'»',
'it': u'»',
'jgo': u'»',
'kab': u'»',
'kkj': u'»',
'ksf': u'»',
'ky': u'»',
'mg': u'»',
'mua': u'»',
'nb': u'»',
'nn': u'»',
'nnh': u'»',
'os': u'»',
'pt': u'»',
'rm': u'»',
'ru': u'»',
'rw': u'»',
'sg': u'»',
'shi': u'»',
'shi': u'»',
'sq': u'»',
'uk': u'»',
'wae': u'»',
'yav': u'»',
'zgh': u'»',
}
def get_quote(code, data, name):
"""
Returns special char for quote.
"""
if code in data:
return name, data[code]
return name, data['ALL']
def get_special_chars(): def get_special_chars(language):
""" """
Returns list of special characters. Returns list of special characters.
""" """
...@@ -42,3 +432,10 @@ def get_special_chars(): ...@@ -42,3 +432,10 @@ def get_special_chars():
else: else:
name = _('Insert character {0}').format(char) name = _('Insert character {0}').format(char)
yield name, char yield name, char
code = language.code.replace('_', '-').split('-')[0]
yield get_quote(code, DOUBLE_OPEN, _('Opening double quote'))
yield get_quote(code, DOUBLE_CLOSE, _('Closing double quote'))
yield get_quote(code, SINGLE_OPEN, _('Opening single quote'))
yield get_quote(code, SINGLE_CLOSE, _('Closing single quote'))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment