3

すべて、私は (とりわけ) 米国英語と英国英語の両方をサポートする必要がある多言語 Web サイトを作成しようとしています。

私の設定には以下が含まれます:

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」に変更してみましたが、動作は変わりません。

ミドルウェアは、言語パスの最初の 2 文字のみをサポートしているように見えますか? ベース言語の複数の方言を適切にサポートするにはどうすればよいですか? これは簡単に 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 (この記事の執筆時点での最新の製品リリース) を使用しています。

更新:私は今それが働いているようです。私の進歩を妨げていたことが2つあったと思います。1) 英語に関しては、1 つを「en」、もう 1 つを「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 は 1 つのレベルで機能する可能性がありますが、このため UI は選択した言語と一致しません。

4

2 に答える 2

3

Django I18N Docsでは、以下に示す 2 つのコードについて説明しています。en_GB英国 (UK)の ロケールですen-CAカナダで話されている英語です

  1. ロケール名アンダースコアが含まれています
  2. language_nameダッシュまたはハイフンが含まれています
于 2014-04-02T16:38:42.580 に答える