web-dev-qa-db-ja.com

Django国際化言語コード

このような言語とlanguage_codeのリストはどこにありますか?.

(Swedish,sv)
(English,en)
34
Hulk
18
histrio

Django内から使用できるものが必要な場合は、以下を試してください。

_from Django.conf import settings
_

これは上記の形式になり、モデルのchoices =フィールドの1つでの割り当てに最適です。 (つまり、user_language = models.CharField(max_length=7, choices=settings.LANGUAGES)

_LANGUAGES = (
    ('ar', gettext_noop('Arabic')),
    ('bg', gettext_noop('Bulgarian')),
    ('bn', gettext_noop('Bengali')),
    etc....
    )
_

設定の使用に関する注意:

Django.conf.settingsはモジュールではないことに注意してください

62
Thomas

以前の回答では、settings.pyからのLANGUAGEの取得のみについて言及していましたが、この変数が上書きされる可能性が非常に高いです。したがって、- Django.conf.global_settings.LANGUAGES

from Django.db import models

from Django.conf.global_settings import LANGUAGES

class ModelWithLanguage(models.Model):
    language = models.CharField(max_length=7, choices=LANGUAGES)
17
vishes_shell
from Django.conf import settings

 #note settings is an object , hence you cannot import its contents

 settings.configure()

 #note LANGUAGES is a Tuple of tuples

 lang_dict = dict(settings.LANGUAGES)

 #use lang_dict for your query.

 print lang_dict['en']

よろしく

サチン

4
user3283069

Django Project から、ダミーのgettext関数しか使用できないことがわかりました。

前の箇条書きで説明したように、カスタムLANGUAGES設定を定義する場合、言語を翻訳文字列としてマークしても問題ありませんが、_Django.utils.translation_ではなく、「ダミー」のugettext()関数を使用してください。設定ファイル内から_Django.utils.translation_をインポートしないでください。そのモジュール自体が設定に依存しているため、循環インポートが発生します。」.

解決策を見つけるのに少し時間がかかりましたが、ようやく手に入りました。モデルフィールドの選択には、実際のgettext関数を含むタプルが必要です。ラムダ関数を使用すると、ダミーを次のように実際のgettext関数でラップできます。

_from Django.utils.translation import ugettext_lazy as _

language = models.CharField(max_length=5, choices=map(lambda (k,v): (k, _(v)), settings.LANGUAGES), verbose_name=_('language'))
_
0
Paul Bormans