我的 django 应用程序是欧洲语言。现在我想恢复为英语并正确地进行国际化和本地化。我在setting.py中做了这个
LANGUAGE_CODE = 'en'
LANGUAGES = [
('en', 'English'),
]
但是整个应用程序仍然没有以英文显示。我在这里错过了什么吗?PS。该应用程序还使用 Django-CMS。
我的 django 应用程序是欧洲语言。现在我想恢复为英语并正确地进行国际化和本地化。我在setting.py中做了这个
LANGUAGE_CODE = 'en'
LANGUAGES = [
('en', 'English'),
]
但是整个应用程序仍然没有以英文显示。我在这里错过了什么吗?PS。该应用程序还使用 Django-CMS。
你需要做很多事情:
然后,您需要标记所有要翻译的字符串:
trans
标签(来自i18n
模板标签库),请参阅文档中的国际化。这与 gettext 有关:处理翻译的通用库。通过在字符串周围添加trans
标签,它们将被包含在需要翻译的巨大字符串列表中(见.po
下文.mo
)。_()
所有字符串(来自django.utils.translation
,另请参阅文档中的国际化)。这也与 gettext 有关,这也包括 gettext 语言文件中的那些字符串。然后,您需要创建语言文件并将翻译添加到这些文件中:
.po
和文件。.mo
在这些文件中,您可以编写翻译后的字符串。这两个文件通常放在/locale/
目录中。对于每种语言,您需要编写翻译后的字符串并将它们放入这些文件中。有关这些语言文件的更多详细信息,请参阅 Django本地化文档。最好阅读 Django 关于国际化和本地化的概述(通常称为 i18n),因为上面的解释只是一般的方法。确切的技术细节在文档中。
请注意,以上内容仅用于翻译作为 Python 代码或模板一部分的静态字符串。如果要翻译 URL 或 Django 模型,则需要安装其他库或使用其他现有的 Django 功能。例如,在 Django 1.4 中添加了一些功能来翻译 URL,但对于早期的 Django 版本,您需要为此使用库/Django 应用程序。
Simeon 的回答涵盖了所有领域,但在这里,我发现了一些可以帮助任何人在开发环境中测试本地化的东西。
如果您是欧洲人,那么您的浏览器可能会请求accepted-language
as es
,仅作为示例。
现在,您想在本地环境中测试英语翻译,那么您需要考虑以下可能性。
根据django-book的参考:
你需要把LocaleMiddleware
1> 首先,它在当前用户的会话中寻找一个 django_language 键。
2> 做不到这一点,它会寻找一个 cookie。
3> 否则,它会查看 Accept-Language HTTP 标头。此标头由您的浏览器发送,并按优先级告诉服务器您喜欢哪种语言。Django 会尝试标题中的每种语言,直到找到具有可用翻译的语言。
4> 否则,它使用全局 LANGUAGE_CODE 设置。
现在,您看到它将检查LANGUAGE_CODE
设置作为最后的手段。
因此,您可以在浏览器中使用 HTTP 请求拦截器并更改accepted-language
值以即时测试您的语言翻译。