我在settings.py中包含以下内容:
LANGUAGES = (
('en', 'English'),
('ru', 'Russian'),
)
LANGUAGE_CODE = 'en-us'
USE_I18N = True
标记了要翻译的字符串
_('Enterprise') # _ is lazy translate
将此包含在我的URLCOnf:
中url(r'^i18n/', include('django.conf.urls.i18n'))
创建了locale文件夹并执行了此操作:
python manage.py makemessages -l ru
翻译了字符串并做了这个:
python manage.py compilemessages
写了这个表格:
<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="/" />
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Translate" />
</form>
我认为我已经采取了所有措施使其发挥作用,但似乎我做错了什么或遗漏了什么。
使用表单并尝试翻译并打印request.LANGUAGE_CODE
时,它会显示我的预期价值。但字符串仍然使用与
这里有什么问题?
答案 0 :(得分:1)
可能您忘了将语言环境中间件添加到您的设置文件中,它看起来应该像这样
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
您应该考虑到语言环境中间件应该位于commonmiddleware之前 并在Sessionmiddleware之后 由于它需要会话中间件的论证
答案 1 :(得分:0)
您应该在settings.py文件中定义LOCALE_PATHS
,如下所示
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale/'),
)
django默认情况下不会在项目的根目录中查找语言环境目录。