好的,我已经疯狂地搜索了这个我认为很简单的问题。
我使用的是Django 1.4。
问题在于django无法在我的模板中翻译一个简单的{% trans "work" %}。
这是我所做的:
Settings.py:
LANGUAGE_CODE = 'en-us'
USE_I18N = True
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.request",
)
LOCALE_PATHS = (
'/home/m00p/PycharmProjects/astrid/locale'
)
这是我的地图结构:
/
myproject/
apps/
locale/
template/
所以我运行了:
django-admin.py makemessages -l nl -i settings.py
它成功地在locale文件夹nl/LC_MESSAGES/django.po中创建了文件,然后我编辑了它在django.po中找到的翻译内容。
#: templates/base.html:22
msgid "work"
msgstr "ddddddddddddd"
我随后运行了编译命令:
它成功地在正确的文件夹中创建了一个django.mo文件。django-admin.py compilemessages
我还在myproject/urls.py中添加了这个内容。
urlpatterns = patterns('',
url(r'^i18n/', include('django.conf.urls.i18n')),
)
urlpatterns += i18n_patterns('',
url(r'^$', 'front.views.home', name='home'),
)
我在base.html文件中添加了这个内容,以便能够更改语言。
<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="/" />
<select name="language">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
当我访问这个网站时,URL中会显示127.0.0.1:8000/en/。这是正确的,因为英语是默认语言。当我用表单将它改成荷兰语(NL)时,它会重定向到127.0.0.1:8000/nl/,但是我翻译的文本没有改变。我确定语言已经切换成了荷兰语,因为当我显示{{ LANGUAGE_CODE }}时,它显示的是NL。
有人知道为什么它没有改变吗?
谢谢m00p
问题已解决
在添加内容时,我忘记清除浏览器缓存,因此它仍然使用旧页面。当我在Chrome中清除浏览器数据并重新访问该页面并更改语言时,它就可以正确翻译了。无论如何,感谢您的建议!
#: templates/base.html:22 msgid "work"
...但是它包含所有的文件在site-packages/django内部(即admin部分)。我不想编辑这些管理文件,但我想编辑以查看翻译是否有效,但对于这个管理部分它并没有起作用..........所以我的主要问题是如何显示我可以编辑的模板数据。 - Inforian