我的django应用程序是欧洲语言。现在我想恢复英语并正确地进行国际化和本地化。我在setting.py
中这样做了LANGUAGE_CODE = 'en'
LANGUAGES = [
('en', 'English'),
]
但整个申请仍然没有用英文显示。我在这里错过了什么吗? PS。该应用程序也使用Django-CMS。
答案 0 :(得分:5)
你需要做很多事情:
然后,您需要标记所有字符串以进行翻译:
trans
标记(来自i18n
模板标记库),请参阅文档中的internationalization。这与gettext相关:一个用于处理翻译的公共库。通过在字符串周围添加trans
标记,它们将包含在需要翻译的大量字符串列表中(请参阅下面的.po
和.mo
)。_()
(来自django.utils.translation
,另请参阅文档中的国际化)。这也与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
值以即时测试您的语言翻译。