3

总之,我正在尝试创建一个多语言网站,该网站必须支持(除其他外)美式英语和英式英语。

我的设置包含:

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 将因此无法匹配所选语言。

4

2 回答 2

3

Django I18N Docs解释了两个代码,如下所示。en_GB英国(英国) 语言环境en-CA在加拿大使用的英语

  1. 语言环境名称下划线
  2. language_name破折号连字符
于 2014-04-02T16:38:42.580 回答
0

我认为这是顺序问题,语言必须高于语言代码。你能在下面试试这个吗?

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'
于 2017-11-24T07:31:04.650 回答