我对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上。答案 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
)命名的。将其重命名为语言环境格式的固定内容。