【问题标题】:Multiple dialects of languages in Django-CMSDjango-CMS 中的多种语言方言
【发布时间】: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


【解决方案1】:

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

  1. 区域名称有一个下划线
  2. language_name破折号连字符

【讨论】:

  • 语言和地区之间有趣的细微差别。我一直想知道为什么这些变化,现在我知道了这一点,这更有意义。
【解决方案2】:

我认为是顺序问题,Languages 必须在 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'

【讨论】:

  • 抱歉,我在 4 年前就发布了。我不再从事该项目 =) 但希望其他人会从您的回答中受益。
猜你喜欢
  • 2013-10-12
  • 2013-02-28
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多