在Django 1.6上,我有一个翻译不能工作的问题。我已经将这个添加到我的settings.py中:
LANGUAGE_CODE = 'en-us'
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('de', ugettext('German')),
)
还增加了中间件:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
以及当我使用一个应该是l10nd的字符串时,我的*.py文件:
from django.utils.translation import ugettext_lazy as _
我的模板以如下开头:
{% extends "base.html" %}
{% load i18n %}
在模板中,我使用了trans
占位符。例如。
<h1>{% trans "Register a tank" %}</h1>
我已经在locale/de/LC_MESSAGES/django.po中提供了翻译:
msgid "Register a tank"
msgstr "Einen neuen Tank anmelden"
我的浏览器设置为首先请求德语内容:Browser settings
我错过了什么?
附注:我目前不太清楚的项目是托管在GitHub上的:https://github.com/frlan/blankspot
发布于 2014-10-09 15:20:52
在我的例子中,我使用en-gb作为参数来运行
django-admin.py makemessages -l en-gb
相反,它应该是en_GB。
django-admin.py makemessages -l en_GB
发布于 2013-12-09 18:32:36
请在django.po
中设置translated string
,然后使用python manage.py compilemessages
for e.g
#: path/to/python/module.py:23
msgid "Welcome to my site."
msgstr "put appropriate translated string here"
建议:您可以使用django-rosetta
包从UI界面添加translated string
。从django-admin添加T-string很容易。https://github.com/mbi/django-rosetta
发布于 2014-01-02 09:36:42
你需要在你的设置中输入enable the LocaleMiddleware
,告诉Django根据浏览器设置进行语言检测。更改语言首选项会有效地设置Accept-Language
标头。您可能需要在匿名窗口中签入,因为其他语言检测方法具有更高的优先级,例如用户的会话和django_language
cookie。
https://stackoverflow.com/questions/20467626
复制相似问题