Django 忽略第三方模块的翻译字符串
我正在用Django 1.6和Python 2.7搭建一个网站,并把它翻译成第二种语言。Django框架的消息和我自己模板里的字符串都能顺利翻译。
我在用一个叫做 django-passwords 的模块,但这个模块没有内置的翻译功能。(django-passwords里的Python代码看起来是用ugettext_lazy正确标记过的,但这个模块没有现成的翻译。)
我在django-passwords的层级创建了一个消息文件(正如在Django的国际化与第三方应用中建议的那样),添加了一些翻译过的字符串并进行了编译。然而,当我运行我的应用时,django-passwords里的字符串仍然显示为英文。
django-passwords安装在c:/Python27/lib/site-packages/passwords,而编译后的消息文件在c:/Python27/lib/site-packages/passwords/locale/fr/LC_MESSAGES/django.mo。
(我也尝试过上面回答中提到的符号链接方法,但django-passwords里的字符串没有被拉入到我应用层级的.po文件中。我在用Windows,所以如果可以的话,我更想避免使用符号链接。)
我还需要做哪些步骤才能让我的应用在显示关于密码验证的消息时使用翻译过的字符串呢?
1 个回答
0
我花了整个下午的时间琢磨这个问题,最后我找到了解决办法:
1 - add the translations i wanted to my `django-password` forked repository
2 - pip install git+https://github.com/Ubiwhere/django-passwords.git@3a0f70d11561cff690eb2a01c613a4280a8d641f
3 - add `passwords` to `INSTALLED_APPS` in settings.py (adding `django-passwords`does not work)
之后,新的翻译就开始正常工作了。