Django-CMS中的多种语言方言

时间:2013-04-04 15:30:50

标签: django django-cms

所有,我正在尝试创建一个多语言网站,必须支持(其中包括)美英和英英。

我的设置包含:

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等。

我正在使用Django-CMS 2.3.5(这是撰写本文时的最新产品版本)在Python 2.7.2上的Django 1.4.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将无法匹配所选语言。 / p>

2 个答案:

答案 0 :(得分:3)

Django I18N Docs解释两个代码,如下所示。 en_GB 英国(英国) 区域设置 en-CA 在加拿大使用英语

  1. 区域设置名称具有下划线
  2. language_name 短划线连字符

答案 1 :(得分:0)

我认为这是序列问题,语言必须高于language_code。你可以试试下面这个。

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'),
    )    

 LANGUAGE_CODE = 'en-us'