我可以通过更改应用程序的Settings.py文件中的LANGUAGE_CODE来切换Django应用程序中的语言。
但我不确定实际文本的来源。
在path-to-django / contrib / auth / locale /中,有许多语言的目录包含我正在显示的文本的翻译。但是,如果我将特定语言的.mo文件移动到新名称,我仍然会看到该语言的文本 - 即使在我重新启动Django之后。那么文本究竟来自哪里?
此外,对于'en'语言环境,翻译后的文本始终为“”(空字符串)。在这种情况下,ugettext_lazy是否只返回其输入字符串?如果没有,英文文本来自哪里?
答案 0 :(得分:0)
如果您在django管理员或您的应用程序中谈到翻译,那将是一个区别。您提到的路径... / contrib / auth / locale是指django admin中的翻译。
要在您的应用程序中进行特殊翻译,您的项目中应该有一个区域设置/文件夹。运行名为“django-admin.py makemessages”的django特殊脚本时,将创建此文件夹。
脚本在项目源树或应用程序上运行 源树并拉出标记为翻译的所有字符串。它 在目录中创建(或更新)消息文件 现场/ LANG / LC_MESSAGES。在de示例中,文件将是 区域设置/ DE / LC_MESSAGES / django.po。
有关详细说明,请查看django i18n documentation
创建消息文件(* .po)后,在消息文件中编写了自己的翻译后,不要忘记编译它们:
编辑邮件文件
创建消息文件后 - 每个 你对它进行更改的时间 - 你需要将它编译成更多 有效的形式,供gettext使用。使用django-admin.py执行此操作 compilemessages实用程序。
此工具在所有可用的.po文件上运行并创建.mo文件, 这是为gettext使用而优化的二进制文件。在相同的 运行django-admin.py makemessages的目录 django-admin.py compilemessages是这样的:
django-admin.py compilemessages
就是这样。您的翻译已经可以使用了。