Flask Babel:添加pycountry外部语言环境

时间:2018-03-21 11:17:44

标签: flask flask-babel

我正在尝试从pycountry包中添加外部语言环境目录。

在初始化Flask Babel之前,我会执行以下操作:

import pycountry
app.config['BABEL_TRANSLATION_DIRECTORIES'] = 'translations;' + pycountry.LOCALES_DIR

但是,这似乎还不够。例如,gettext('Germany')将找不到翻译。

我认为问题可能是翻译在pycountry中的结构。

~/.local/lib/python3.5/site-packages/pycountry/locales/pt/LC_MESSAGES$ ls
iso15924.mo   iso3166-3.mo  iso4217.mo   iso639-3.mo
iso3166-1.mo  iso3166.mo    iso639_3.mo

我是否需要指定我想要的内容,例如iso3166文件?请参阅以下参考资料。

1 个答案:

答案 0 :(得分:0)

我还需要使用flask babel加载pycountry区域设置。

为此,我研究了flask-babel get_translations()关于如何加载翻译的问题。

无论如何,我有一些工作要把它放在你的应用程序中。

def hack_country_gettext(string):
    translations = support.Translations()
    catalog = translations.load(pycountry.LOCALES_DIR, [get_locale()], 'iso3166')
    translations.merge(catalog)
    return translations.ugettext(string)

而不是_('Germany')使用hack函数hack_country_gettext('Germany')