Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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))