3

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

LANGUAGE_CODE = 'en'
LANGUAGES = [
    ('en', 'English'),
]

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

4

2 回答 2

5

你需要做很多事情:

  • 用一种语言写所有字符串,在你的情况下是英语。

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

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

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

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

最好阅读 Django 关于国际化和本地化的概述(通常称为 i18n),因为上面的解释只是一般的方法。确切的技术细节在文档中。

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

于 2012-07-16T10:16:15.530 回答
0

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

如果您是欧洲人,那么您的浏览器可能会请求accepted-languageas es,仅作为示例。

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

根据django-book的参考:

你需要把LocaleMiddleware

1> 首先,它在当前用户的会话中寻找一个 django_language 键。

2> 做不到这一点,它会寻找一个 cookie。

3> 否则,它会查看 Accept-Language HTTP 标头。此标头由您的浏览器发送,并按优先级告诉服务器您喜欢哪种语言。Django 会尝试标题中的每种语言,直到找到具有可用翻译的语言。

4> 否则,它使用全局 LANGUAGE_CODE 设置。

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

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

于 2015-12-15T16:19:31.193 回答