12

我对 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 会编译消息,只有“配置文件”和“设置”被翻译。你知道它可能来自哪里吗?它是否与使用空白有关?i18n 模块中有调试模式吗?

谢谢你的帮助!:)

编辑:我们在 django 1.4 上。

4

3 回答 3

7

您需要删除模糊线。

模糊可能意味着原始字符串已更改。Gettext 不想丢失您的翻译,因此它会更改它但将其标记为模糊。

我推荐你罗塞塔。它将为您创建类似管理员的界面,您可以在其中翻译字符串和管理模糊。

干杯

于 2013-04-02T09:51:00.830 回答
4

我有完全相同的症状,我只是忘记添加LOCALE_PATHS设置,并且 Django 对我的一些字符串使用了一些默认翻译字符串,并且没有访问我自定义开发的消息文件。

添加此设置解决了问题:

LOCALE_PATHS = (
    PROJECT_DIR.child('locale'),  # assuming PROJECT_DIR is set to project root (using unipath)
)
于 2013-08-04T11:20:27.713 回答
1

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

于 2018-09-18T01:54:51.137 回答