【发布时间】:2012-10-01 07:45:23
【问题描述】:
好的,我一直在疯狂寻找这个我认为很简单的问题。
我使用 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
它确实在语言环境文件夹 nl/LC_MESSAGES/django.po 中成功创建,然后我编辑它在 django.po 中找到的翻译
#: templates/base.html:22
msgid "work"
msgstr "ddddddddddddd"
然后我运行编译命令
django-admin.py 编译消息
它还在正确的文件夹中成功创建了一个 django.mo 文件
我也在 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/ 但我翻译的文本没有改变。我也确定语言是 NL,因为当我显示 {{ LANGUAGE_CODE }} 时它说 NL。
有人知道为什么它不改变吗?
谢谢m00p
问题已解决
在添加东西的过程中,我忘记了它的工作,我重新启动了我的部署服务器,但我没有清除浏览器的缓存它仍在使用旧页面,因此,当我在 Chrome 中清除浏览器数据并重新访问该页面并更改它正确翻译的语言时。无论如何感谢您的建议!
【问题讨论】:
-
我也在使用这个多语言概念,我做了你所做的,但是在我的 django.po 文件中它不包含我可以编辑的模板文件行,例如因为您的 .po 文件包含
#: templates/base.html:22 msgid "work"....但是它包含 site-packages/django 内的所有文件(即管理部分)我不想编辑这些管理文件,但我编辑以查看天气翻译是否有效,但它也不适用于此管理部分......所以我的主要问题是如何显示我可以编辑的模板数据 -
我已经在我的模板中指定了
{% load i18n %} {% trans "Hello" %},以便 .po 文件选择它,我可以在 .po 文件中添加翻译数据............但它仍然是不会在 .po 文件中选择这些模板..... ???
标签: python django templates translation