Add support for Spanish language

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
stable
Thomas Petazzoni 2010-01-05 23:56:40 +01:00
rodzic bc64d2a57c
commit fbf1d0164a
1 zmienionych plików z 46 dodań i 0 usunięć

Wyświetl plik

@ -163,6 +163,51 @@ class i18n_it_generic(i18n):
def first_letter_equal(self, a, b):
return self._upper_unaccent_string(a) == self._upper_unaccent_string(b)
class i18n_es_generic(i18n):
APPELLATIONS = [ u"Avenida", u"Avinguda", u"Calle", u"Camino", u"Camí", u"Carrer",
u"Carretera", u"Plaza", u"Plaça", u"Ronda" ]
DETERMINANTS = [ u" de", u" de la", u" del", u" de las",
u" dels", u" de los", u" d'", u" de l'", u"" ]
SPACE_REDUCE = re.compile(r"\s+")
PREFIX_REGEXP = re.compile(r"^(?P<prefix>(%s)(%s)?)\s?\b(?P<name>.+)" %
("|".join(APPELLATIONS),
"|".join(DETERMINANTS)), re.IGNORECASE
| re.UNICODE)
# for IndexPageGenerator._upper_unaccent_string
E_ACCENT = re.compile(ur"[éèêëẽ]", re.IGNORECASE | re.UNICODE)
I_ACCENT = re.compile(ur"[íìîïĩ]", re.IGNORECASE | re.UNICODE)
A_ACCENT = re.compile(ur"[áàâäã]", re.IGNORECASE | re.UNICODE)
O_ACCENT = re.compile(ur"[óòôöõ]", re.IGNORECASE | re.UNICODE)
U_ACCENT = re.compile(ur"[úùûüũ]", re.IGNORECASE | re.UNICODE)
N_ACCENT = re.compile(ur"[ñ]", re.IGNORECASE | re.UNICODE)
def __init__(self, language, locale_path):
self.language = str(language)
_install_language(language, locale_path)
def _upper_unaccent_string(self, s):
s = self.E_ACCENT.sub("e", s)
s = self.I_ACCENT.sub("i", s)
s = self.A_ACCENT.sub("a", s)
s = self.O_ACCENT.sub("o", s)
s = self.U_ACCENT.sub("u", s)
s = self.N_ACCENT.sub("n", s)
return s.upper()
def language_code(self):
return self.language
def user_readable_street(self, name):
name = name.strip()
name = self.SPACE_REDUCE.sub(" ", name)
name = self.PREFIX_REGEXP.sub(r"\g<name> (\g<prefix>)", name)
return name
def first_letter_equal(self, a, b):
return self._upper_unaccent_string(a) == self._upper_unaccent_string(b)
class i18n_generic(i18n):
def __init__(self, language, locale_path):
self.language = str(language)
@ -209,6 +254,7 @@ language_class_map = {
'de_DE.UTF-8': i18n_generic,
'de_LU.UTF-8': i18n_generic,
'de_CH.UTF-8': i18n_generic,
'es_ES.UTF-8': i18n_es_generic,
}
def install_translation(locale_name, locale_path):