2013-04-04 126 views
3

所有,我试图创建一个多语言网站,它必须支持(其中包括)美英和英英两种语言。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)在我所有的实验中,我怀疑我在DB中弄糟了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可以在一个水平上工作,但用户界面将失败,因为所选择的语言匹配这个。

+0

@catherine“我试着将上面的配置更改为'en-GB','en-gb或'en_gb',但行为没有变化。” – 2013-04-04 15:59:18

+0

咦?你想让我用('cy',u'English(UK)')?我对Welsh-GB不感兴趣,而是英国方言,而不是美国方言。 (作为一个英美人士,我知道听起来有多愚蠢) – mkoistinen 2013-04-04 16:10:29

回答

3

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

  1. 设置名称强调
  2. LANGUAGE_NAME破折号连字符
+0

语言和语言环境之间有趣的细微差别。我一直在想,为什么这些变化,现在我知道这一点,这变得更好。 – boatcoder 2016-11-17 18:49:18

1

我认为这是顺序问题,语言必须是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' 
+0

对不起,我发布了4年多前。我不再在这个项目上工作=)但希望别人能从你的答案中受益。 – mkoistinen 2017-11-24 21:02:41