【发布时间】:2013-04-04 15:30:49
【问题描述】:
所有,我正在尝试创建一个多语言网站,该网站必须支持(其中包括)美式英语和英式英语。
我的设置包含:
LANGUAGES = (
('de', u'Deutsch'),
('en_GB', u'English (UK)'),
('en', u'English (US)'),
('es', u'Español'),
('fr', u'Français'),
('pt', u'Português'),
)
所有其他语言都可以正常工作;用户可以切换语言并且一切正常。问题是 en_GB。
我已尝试将上述配置更改为“en-GB”、“en-gb”或“en_gb”,但行为没有任何变化。
中间件似乎只支持语言路径的前两个字母?如何正确支持基础语言的多种方言?这很容易是 es-US、es-MX、es-ES 或 fr-FR、fr-CA 或 de-DE、de-AT、de-CH 等。
我在 Python 2.7.2 上的 Django 1.4.5 上使用 Django-CMS 2.3.5(这是撰写本文时的最新生产版本)。
更新:我现在似乎可以正常工作了。我认为有两件事阻碍了我的进步。 1) 说到英语,最好不要将一个作为“en”,另一个作为“en-gb”。 2)在我所有的实验中,我怀疑我在数据库中弄乱了 Django-CMS 的记录。删除我所有的页面并重新开始似乎已经解决了这个问题(注意:这在生产环境中比在这里更糟糕!)
最后,我发现这些设置对我有用:
LANGUAGE_CODE = 'en-us'
LANGUAGES = (
('en-us', u'English (US)'),
('de', u'Deutsch'),
('en-gb', u'English (UK)'),
('es', u'Español'),
('fr', u'Français'),
('pt', u'Português'),
)
CMS_LANGUAGES = LANGUAGES
CMS_LANGUAGE_CONF = {
'de': ['en-gb', 'en-us', 'fr', 'es', 'pt'],
'en-gb': ['en-us', 'fr', 'es', 'de', 'pt'],
'en-us': ['en-gb', 'fr', 'es', 'de', 'pt'],
'es': ['pt', 'fr', 'en-gb', 'en-us', 'de'],
'fr': ['es', 'pt', 'en-gb', 'en-us', 'de'],
'pt': ['es', 'fr', 'en-gb', 'en-us', 'de'],
}
CMS_HIDE_UNTRANSLATED = False
另外,显然 Django-CMS 的模板标签 page_language_url 只会返回小写语言路径元素,因此 en_GB/en-GB 可能在一个级别上工作,但 UI 将因此无法匹配所选语言。
【问题讨论】:
-
@catherine "我尝试将上述配置更改为 'en-GB'、'en-gb 或 'en_gb',但行为没有改变。"
-
嗯?您希望我使用 ('cy', u'English (UK)')?我对 Welsh-GB 不感兴趣,而是对英语的英国方言而不是美国方言感兴趣。 (作为一名英裔美国人,我确实知道这听起来很愚蠢)
标签: django django-cms