このような言語とlanguage_codeのリストはどこにありますか?.
(Swedish,sv)
(English,en)
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....
)
_
以前の回答では、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)
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']
よろしく
サチン
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'))
_