正在使用哪些Django国际化文件?

时间:2012-09-09 04:50:52

标签: django text internationalization

我可以通过更改应用程序的Settings.py文件中的LANGUAGE_CODE来切换Django应用程序中的语言。

但我不确定实际文本的来源。

在path-to-django / contrib / auth / locale /中,有许多语言的目录包含我正在显示的文本的翻译。但是,如果我将特定语言的.mo文件移动到新名称,我仍然会看到该语言的文本 - 即使在我重新启动Django之后。那么文本究竟来自哪里?

此外,对于'en'语言环境,翻译后的文本始终为“”(空字符串)。在这种情况下,ugettext_lazy是否只返回其输入字符串?如果没有,英文文本来自哪里?

1 个答案:

答案 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

     

就是这样。您的翻译已经可以使用了。