问题是:如果我将英语作为主要语言( LANGUAGE_CODE ='en'),那么一切正常。如果我们从具有英语语言环境的浏览器请求该站点,我们会看到英语版本,类似地用于具有俄语语言环境的浏览器。
但如果我设置 LANGUAGE_CODE ='ru',那么无论如何我们都会看到俄语版本。
那么为什么英语被默认并被Django用作msgid?
请参阅下面的项目设置。
在我的 settings.py 中,我尝试不将英语设为主要语言:
LANGUAGE_CODE = 'ru'
LANGUAGES = ( ( 'en', "English", ), ( 'ru', "Russian", ), )
然后我有en / LC_MESSAGES / django.po:
msgid "SITE_MAIN_TITLE"
msgstr "D'argent: Cosmetics, Hair Care, Parfume"
和ru / LC_MESSAGES / django.po:
msgid "SITE_MAIN_TITLE"
msgstr "D'argent – косметика, средства по уходу за волосами, парфюмерия"
在模板HTML中:
...
<title>{% block title %}{% trans "SITE_MAIN_TITLE" %}{% endblock %}</title>
...
答案 0 :(得分:1)
如果你使用这个'django.middleware.locale.LocaleMiddleware'中间件。
https://github.com/django/django/blob/master/django/utils/translation/trans_real.py#L366
请参阅get_language_from_request函数。了解如何选择默认语言代码。 可能永远不会使用那些settings.LANGUAGE_CODE;)。