我已按照文档说明如何执行 i18n,但这些单词仍以英文显示。
设置.py:
USE_I18N = True
LANGUAGES = (
('en', 'English'),
('de', 'German'),
)
LANGUAGE_CODE = 'de'
意见:
from django.utils.translation import ugettext as _
...
messages.set_level(request, messages.SUCCESS)
messages.success(request, _(u'An invitation was sent to %s.') % invitation.email)
我正在 Ubuntu 上开发并安装了 gettext。在命令行中,我输入这些:
django-admin.py makemessages -l de
我得到一个 .po 文件并相应地对其进行编辑:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-01 17:42+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: MyBookmarks/templates/friend_invite.html:3
#: MyBookmarks/templates/friend_invite.html:4
msgid "Invite A Friend"
msgstr "hhhhh"
#: MyBookmarks/templates/friend_invite.html:11
msgid "send invite"
msgstr "gggggggggg"
#: MyBookmarksApp/forms.py:8
msgid "Friend's Name"
msgstr "ffffffffff"
#: MyBookmarksApp/forms.py:9
msgid "Friend's Email"
msgstr "ddddddddd"
#: MyBookmarksApp/views.py:123
#, python-format
msgid "An invitation was sent to %s."
msgstr "ssssssssssss %s"
#: MyBookmarksApp/views.py:127
msgid "An error happened when sending the invitation."
msgstr "aaaaaaa"
然后我运行这个命令:
django-admin.py compilemessages
并创建 .mo 文件。我运行该应用程序,一切仍然是简单的英语。我错过了什么?
更新 2:
我现在尝试了一种新方法:
我已经添加了
'django.middleware.locale.LocaleMiddleware',
到 settings.py 中的 MIDDLEWARE_CLASSES
然后我在 url.py 中添加了以下内容:
# i18n
(r'^i18n/', include('django.conf.urls.i18n')),
在我的 base.html 模板中,我添加了这个:
{% load i18n %}
...
<div id="footer">
<form action="/i18n/setlang/" method="post">
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
</div>
现在我可以在我的页面上看到一个下拉菜单来更改语言。即使将语言更改为德语,也没有任何变化。1.4中似乎有些东西坏了......
更新 3:
我创建了一个新的简单测试项目来演示这个问题。
这是一个非常简单的项目,您可以在主页上切换德语和英语。您会看到所选语言代码实际上发生了变化,这是一个好兆头,但翻译根本没有发生。我想知道这是否是一个需要报告的错误。非常感谢您的合作。
请从这里下载:http: //www.chasebot.com/TestProject.zip
(一旦在 settings.py 中提取,您需要更改数据库的绝对路径)
请让我知道您是否可以复制它。谢谢