我遇到Django加载正确翻译(.po / .mo)文件的问题。
我知道我的翻译工作正常,因为当我将LANGUAGE_CODE更改为' fr'我可以看到我的字符串翻译过了。
LANGUAGE_CODE = 'nl'
LANGUAGES = (
('nl', 'Nederlands'),
('fr', 'Frans'),
)
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'),
]
TIME_ZONE = 'UTC'
USE_I18N = True
但是当我设置我的翻译以使用i18n_patterns
中的urls.py
时,我访问的时候没有加载我的法语(fr)翻译:{{1}}它仍会加载荷兰语(nl)值。
有趣的是,当我访问127.0.0.1:8000/fr/about/
时,我可以看到它加载了法语管理员值,当我访问127.0.0.1:8000/fr/admin/
时,它会加载荷兰语...我必须做错事。
urls.py
127.0.0.1:8000/nl/admin/
答案 0 :(得分:1)
您需要在models.py和forms.py中使用import ugettext_lazy as _
,而不是常规ugettext
。 ugettext
将在导入期间评估翻译,此时除了使用默认语言之外别无选择; ugettext_lazy
会在渲染时进行评估,此时它会提供正确的语言信息。