国际化的Django应用程序回到英语

时间:2012-07-16 10:11:09

标签: python django localization internationalization django-cms

我的django应用程序是欧洲语言。现在我想恢复英语并正确地进行国际化和本地化。我在setting.py

中这样做了
LANGUAGE_CODE = 'en'
LANGUAGES = [
    ('en', 'English'),
]

但整个申请仍然没有用英文显示。我在这里错过了什么吗? PS。该应用程序也使用Django-CMS。

2 个答案:

答案 0 :(得分:5)

你需要做很多事情:

  • 用一种语言写出所有字符串,例如英文。

然后,您需要标记所有字符串以进行翻译:

  • 在模板中的所有字符串周围添加trans标记(来自i18n模板标记库),请参阅文档中的internationalization。这与gettext相关:一个用于处理翻译的公共库。通过在字符串周围添加trans标记,它们将包含在需要翻译的大量字符串列表中(请参阅下面的.po.mo)。
  • 在Python源代码中的所有字符串周围添加_()(来自django.utils.translation,另请参阅文档中的国际化)。这也与gettext有关,这包括gettext语言文件中的那些字符串。

然后,您需要创建语言文件并将翻译添加到这些文件中:

  • 创建包含翻译字符串的gettext .po.mo文件。在这些文件中,您可以编写已翻译的字符串。这两个文件通常放在/locale/目录中。对于每种语言,您需要编写已翻译的字符串并将它们放在这些文件中。有关这些语言文件的更多详细信息,请参阅localization上的Django文档。

阅读Django对internationalization and localization(通常称为i18n)的概述很好,因为上面的解释只是一般的方法。具体的技术细节在文档中。

请注意,上述内容仅用于翻译属于Python代码或模板的静态字符串。如果要翻译URL或Django模型,则需要安装其他库或使用其他现有的Django功能。例如,在Django 1.4中添加了一些功能来翻译URL,但是对于早期的Django版本,你需要使用库/ Django应用程序。

答案 1 :(得分:0)

Simeon的答案涵盖了所有方面,但在这里,我找到了一些可以帮助任何人测试开发环境中的本地化的东西。

如果您是原籍欧洲人,那么您的浏览器可能会将accepted-language作为es请求,仅供参考。

现在,您想在本地环境中测试英语翻译,然后您需要考虑以下可能性。

根据django-book的参考:

您需要放置LocaleMiddleware

  

1>首先,它在当前用户中查找django_language键   会话。

     

2 - ;如果做不到这一点,就会找到一个cookie。

     

3>如果做不到这一点,它会查看Accept-Language HTTP标头。这个   标头由您的浏览器发送并告诉服务器哪种语言   你更喜欢,按优先顺序排列。 Django尝试了每种语言   标题,直到找到一个可用的翻译。

     

4>如果不这样做,它会使用全局LANGUAGE_CODE设置。

现在,您会看到它会将LANGUAGE_CODE设置作为最后的手段。

因此,您可以在浏览器中使用HTTP请求拦截器并更改accepted-language值以即时测试您的语言翻译。