Django本地化:如何使用非英语作为“翻译来自”语言

时间:2012-01-31 05:40:06

标签: django

问题是:如果我将英语作为主要语言( 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>
...

1 个答案:

答案 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;)。