Python 国际化Django应用返回英语
我的django应用程序使用的是欧洲语言。现在我想回到英语,正确地进行国际化和本地化。我是在setting.py中做的Python 国际化Django应用返回英语,python,django,localization,internationalization,django-cms,Python,Django,Localization,Internationalization,Django Cms,我的django应用程序使用的是欧洲语言。现在我想回到英语,正确地进行国际化和本地化。我是在setting.py中做的 LANGUAGE_CODE = 'en' LANGUAGES = [ ('en', 'English'), ] 但整个应用程序仍然没有用英语显示。我是不是遗漏了什么? 另外,该应用程序还使用Django CMS。您需要执行多项操作: 用一种语言编写所有字符串,以英语为例 然后需要标记所有字符串以进行翻译: 在模板中的所有字符串周围添加trans标记(来自i18n
LANGUAGE_CODE = 'en'
LANGUAGES = [
('en', 'English'),
]
但整个应用程序仍然没有用英语显示。我是不是遗漏了什么?
另外,该应用程序还使用Django CMS。您需要执行多项操作:
- 用一种语言编写所有字符串,以英语为例
- 在模板中的所有字符串周围添加
标记(来自trans
模板标记库),请参见文档中的。这与gettext有关:一个处理翻译的公共库。通过在字符串周围添加i18n
标记,它们将包含在需要翻译的字符串的巨大列表中(请参见下面的trans
和.po
).mo
- 在Python源代码中的所有字符串周围添加
(来自。
,另请参见文档中的国际化)。这也与gettext相关,并且在gettext语言文件中也包括这些字符串django.utils.translation
- 创建包含翻译字符串的gettext
和.po
文件。在这些文件中,您可以编写翻译后的字符串。这两个文件通常放在.mo
目录中。对于每种语言,您都需要编写翻译后的字符串并将其放入这些文件中。有关这些语言文件的更多详细信息,请参阅上的Django文档/locale/
请注意,以上内容仅用于翻译作为Python代码或模板一部分的静态字符串。如果您想转换URL或Django模型,那么您需要安装其他库或使用其他现有的Django功能。例如,在Django 1.4中,添加了一些功能来翻译URL,但对于早期的Django版本,您需要使用library/Django应用程序来实现这一点。Simeon的回答涵盖了所有方面,但在这里,我发现了一些可以帮助任何人在开发环境中测试本地化的东西 如果您是土生土长的欧洲人,那么您的浏览器可能会请求将
公认语言
作为es
,仅作为示例
现在,您想在本地环境中测试英语翻译,然后需要考虑下面的可能性。
根据的参考: 你需要把 1> 首先,它在当前用户的 会议 2> 如果做不到这一点,它会寻找一块饼干 3> 否则,它将查看Accept Language HTTP头。这 标头由浏览器发送,并告知服务器使用哪种语言 你更喜欢,按优先级排序。Django会尝试每种语言 标题,直到找到具有可用翻译的标题 4> 否则,它将使用全局语言代码设置 现在,您看到它将检查语言\u code
设置作为最后手段
因此,您可以在浏览器中使用HTTP请求拦截器,并更改
接受的语言
值,以动态测试您的语言翻译。非常感谢Simeon。嗯,是的,我知道这些步骤,我在跳入这个应用程序之前创建了一个演示应用程序。我的问题是,应用程序是使用django国际化/本地化步骤编写的,当我尝试恢复到英语时,它失败了。字符串有问题吗?此应用中使用的字符串是英语和非英语的混合字符串。您不能有混合字符串:所有字符串必须使用一种语言,然后您可以使用翻译文件更改语言。Django知道在您更改请求的当前语言时加载正确的语言文件。再次非常感谢。我想这就是我的应用程序没有用英语呈现的原因。将修复:)我的应用程序也使用Django CMS。我想这与CMS有关。有什么想法吗?Django CMS也是可翻译的,但它需要额外的配置(例如不同的语言),请参阅和