0

我正在尝试从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文件吗?请参阅以下参考。

4

1 回答 1

0

我还需要加载 pycountry 语言环境flask babel

为此,我研究了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')

于 2018-06-17T22:18:36.243 回答