def translations_for_locale(locale, mo_path=MO_PATH): """ Get the right translation and return it """ cache_key = (locale, mo_path) if CCORG_GETTEXT_TRANSLATIONS.has_key(cache_key): return CCORG_GETTEXT_TRANSLATIONS[cache_key] # do I have the order backwards here? langs = applicable_langs(locale) translations = None for lang in langs: full_mo_path = os.path.join(mo_path, lang, 'LC_MESSAGES', 'cc_org.mo') if not os.path.exists(full_mo_path): continue this_trans = gettext.GNUTranslations(open(full_mo_path, 'rb')) if translations is None: translations = this_trans else: translations.add_fallback(this_trans) CCORG_GETTEXT_TRANSLATIONS[cache_key] = translations return translations
def test_applicable_langs(): """ Test cc.i18n.util.test_applicable_langs """ ## Make sure we return the right patterns # normal default language (en) assert util.applicable_langs("en", FAKE_MODIR) == ["en"] # english with country assert util.applicable_langs("en_US", FAKE_MODIR) == ["en_US", "en"] # language with fake country assert util.applicable_langs("pt_FOO", FAKE_MODIR) == ["pt", "en"] # just language assert util.applicable_langs("zh", FAKE_MODIR) == ["zh", "en"] # language with real country assert util.applicable_langs("zh_TW", FAKE_MODIR) == ["zh_TW", "zh", "en"] # totally fake language assert util.applicable_langs("foobie_BLECH", FAKE_MODIR) == ["en"] # Make sure we cached the right things def _check_cache(lang): return util.CACHED_APPLICABLE_LANGS[lang, FAKE_MODIR] assert _check_cache("en") == ["en"] assert _check_cache("en_US") == ["en_US", "en"] assert _check_cache("pt_FOO") == ["pt", "en"] assert _check_cache("zh") == ["zh", "en"] assert _check_cache("zh_TW") == ["zh_TW", "zh", "en"] # Don't cache foobie_blech, that'd be silly assert not util.CACHED_APPLICABLE_LANGS.has_key(("foobie_BLECH", FAKE_MODIR))
def test_applicable_langs(): """ Test cc.i18n.util.test_applicable_langs """ ## Make sure we return the right patterns # normal default language (en) assert util.applicable_langs('en', FAKE_MODIR) == ['en'] # english with country assert util.applicable_langs('en_US', FAKE_MODIR) == ['en_US', 'en'] # language with fake country assert util.applicable_langs('pt_FOO', FAKE_MODIR) == ['pt', 'en'] # just language assert util.applicable_langs('zh', FAKE_MODIR) == ['zh', 'en'] # language with real country assert util.applicable_langs('zh_TW', FAKE_MODIR) == ['zh_TW', 'zh', 'en'] # totally fake language assert util.applicable_langs('foobie_BLECH', FAKE_MODIR) == ['en'] # Make sure we cached the right things def _check_cache(lang): return util.CACHED_APPLICABLE_LANGS[lang, FAKE_MODIR] assert _check_cache('en') == ['en'] assert _check_cache('en_US') == ['en_US', 'en'] assert _check_cache('pt_FOO') == ['pt', 'en'] assert _check_cache('zh') == ['zh', 'en'] assert _check_cache('zh_TW') == ['zh_TW', 'zh', 'en'] # Don't cache foobie_blech, that'd be silly assert not util.CACHED_APPLICABLE_LANGS.has_key( ('foobie_BLECH', FAKE_MODIR))