一些字符串未在django i18n模块中翻译

时间:2013-04-02 09:04:29

标签: python django django-i18n

我对django的国际化模块有一些奇怪的麻烦。大多数字符串都是必须翻译的,而其他字符串则不是。让我告诉你和例子:

<li>{% trans "Upload Score" %}</li>
<li>{% trans "Profile" %}</li>
<li>{% trans "Invite friends" %}</li>
<li>{% trans "Settings" %}</li>

我有一个菜单的4个项目列表。我运行django命令makemessages以法语翻译网站,我按预期得到了所有内容:

#: templates/main.html:190 templates/main.html.py:195
#, fuzzy
msgid "Upload Score"
msgstr "Publier"

#: templates/main.html:191 templates/main.html.py:196
msgid "Profile"
msgstr "Profil"

#: templates/main.html:192 templates/main.html.py:197
#, fuzzy
msgid "Invite Friends"
msgstr "inviter vos amis"

#: templates/main.html:193 templates/main.html.py:198
msgid "Settings"
msgstr "Préférences"

但是当我编译它时,将django-admin compilemessages,只翻译“Profile”和“Settings”。你知道它可能来自哪里吗?它可以与白色空间的使用联系起来吗? i18n模块中是否有调试模式?

谢谢你的帮助! :)

编辑:我们在django 1.4上。

3 个答案:

答案 0 :(得分:7)

您需要删除模糊线条。

模糊可能意味着原始字符串已被更改。 Gettext不想丢失你的翻译,所以它会改变它,但标记模糊。

我建议你rosetta。它将创建您喜欢的界面管理员,您可以在其中翻译字符串并管理模糊。

干杯

答案 1 :(得分:4)

我有完全相同的症状,我只是忘了添加LOCALE_PATHS设置,Django正在为我的某些字符串使用一些默认翻译字符串,而没有到达我自定义开发的消息文件。

添加此设置解决了问题:

LOCALE_PATHS = (
    PROJECT_DIR.child('locale'),  # assuming PROJECT_DIR is set to project root (using unipath)
)

答案 2 :(得分:1)

在我的情况下,保存我的LC_MESSAGES目录的目录是以我想要的语言代码(例如en-us)而不是语言环境(en_US)命名的。将其重命名为语言环境格式的固定内容。