def load_i18n(project_root, tell_sentry): # Load the locales key = lambda t: strip_accents(t[1]) localeDir = os.path.join(project_root, 'i18n', 'core') locales = i18n.LOCALES for file in os.listdir(localeDir): try: parts = file.split(".") if not (len(parts) == 2 and parts[1] == "po"): continue lang = parts[0] with open(os.path.join(localeDir, file)) as f: l = locales[lang.lower()] = Locale(lang) c = l.catalog = read_po(f) c.plural_func = get_function_from_rule(c.plural_expr) try: l.countries_map = { k: l.territories[k] for k in COUNTRIES_MAP } l.countries = sorted(l.countries_map.items(), key=key) except KeyError: l.countries_map = COUNTRIES_MAP l.countries = COUNTRIES except Exception as e: tell_sentry(e) # Add the default English locale locale_en = i18n.LOCALE_EN = locales['en'] = Locale('en') locale_en.catalog = Catalog('en') locale_en.catalog.plural_func = lambda n: n != 1 locale_en.countries = COUNTRIES locale_en.countries_map = COUNTRIES_MAP # Add aliases for k, v in list(locales.items()): locales.setdefault(ALIASES.get(k, k), v) locales.setdefault(ALIASES_R.get(k, k), v) for k, v in list(locales.items()): locales.setdefault(k.split('_', 1)[0], v) # Patch the locales to look less formal locales['fr'].currency_formats[None] = parse_pattern('#,##0.00\u202f\xa4') locales['fr'].currency_symbols['USD'] = '$'
COUNTRIES = make_sorted_dict(COUNTRY_CODES, Locale('en').territories) LANGUAGE_CODES_2 = """ aa af ak am ar as az be bg bm bn bo br bs ca cs cy da de dz ee el en eo es et eu fa ff fi fo fr ga gd gl gu gv ha he hi hr hu hy ia id ig ii is it ja ka ki kk kl km kn ko ks kw ky lg ln lo lt lu lv mg mk ml mn mr ms mt my nb nd ne nl nn nr om or os pa pl ps pt rm rn ro ru rw se sg si sk sl sn so sq sr ss st sv sw ta te tg th ti tn to tr ts uk ur uz ve vi vo xh yo zh zu """.split() LANGUAGES_2 = make_sorted_dict(LANGUAGE_CODES_2, Locale('en').languages) LOCALES = {} LOCALE_EN = LOCALES['en'] = Locale('en') LOCALE_EN.catalog = Catalog('en') LOCALE_EN.catalog.plural_func = lambda n: n != 1 LOCALE_EN.countries = COUNTRIES LOCALE_EN.languages_2 = LANGUAGES_2 SEARCH_CONFS = dict(( ('da', 'danish'), ('de', 'german'), ('en', 'english'), ('es', 'spanish'), ('fi', 'finnish'), ('fr', 'french'), ('hu', 'hungarian'), ('it', 'italian'), ('nb', 'norwegian'), ('nl', 'dutch'),