2013-04-04 125 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