我正在尝试从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
文件?请参阅以下参考资料。
答案 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')