我的django翻译有问题。
问题1 - 我更新了django.po文件中的字符串,但更改没有出现在网页上。
问题2 - 我用django-admin.py makemessages -l et创建了我自己的语言环境文件,将翻译字符串添加到文件中,但它们也没有出现在页面上。
我不认为这是设置问题,因为django.po文件的翻译确实出现在网站上,只是更改和我自己生成的文件中没有出现的翻译。
编辑: 我的settings.py包含:
gettext = lambda s: s
LANGUAGE_CODE = 'et'
LANGUAGES = (
('et', gettext('Estonian')),
)
我自己的语言环境文件位于
/path/to/project/locale/et/LC_MESSAGES/
,文件是
django.mo和django.po
我在问题1中提到的文件是django own et transaltion,我改变了。
答案 0 :(得分:26)
嗯,我刚才得到了同样的错误。我解决了它在我的django.po文件中删除翻译字符串上的“#,fuzzy”标记。如果获得此标记,似乎不会提供已翻译的文本,因此请务必翻译文本然后删除此行。
以下是po文件中已翻译文本而非服务器的示例:
#: course/models.py:13
#, fuzzy
msgid "code"
msgstr "código"
所以,只需删除标志并保留如下:
#: course/models.py:13
msgid "code"
msgstr "código"
我希望这对你有用。祝你好运!
参考:http://share-experiences.com/blog/what-fuzzy-means-python-django-gettext/
PD:我知道你几个月前就遇到过这个问题了,但我留下这个回应是因为如果你解决了这个问题我们从未听说过。答案 1 :(得分:12)
有相同/类似的问题,翻译没有显示。设置LOCALE_PATHS解决了问题:
# settings.py
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = (
'/path/to/djangoapp/locale',
)
答案 2 :(得分:7)
翻译文件(PO)只在内存中加载一次,Django不会更改PO文件。要加载新的翻译文件,您需要重新启动Django(例如,停止/启动runserver,Apache或NGINX)。
答案 3 :(得分:1)
Django翻译无法正常工作的另一个原因是使用与用于运行应用程序的Python版本不同的Python版本编译.po文件。确保使用相同的版本。
答案 4 :(得分:0)
确保使用ugettext_lazy而不是ugettext
答案 5 :(得分:0)
如果您使用gettext.translation来获取翻译,即:
text_de = gettext.translation('django', locale_dir, ['de'], fallback=True).ugettext('Welcome to my site')
...您的翻译工作在开发服务器上,但不适用于生产,请注意locale_dir必须指向您的语言环境目录。它可能位于其中一个系统的其他位置。花了2个小时才找到它。
答案 6 :(得分:-2)
检查USE_I18N
设置。 More info。无论如何,我认为默认情况下是True
...