このような言語とlanguage_codeのリストはどこにありますか。
(Swedish,sv)
(English,en)
このような言語とlanguage_codeのリストはどこにありますか。
(Swedish,sv)
(English,en)
django 内から使用できるものが必要な場合は、次を試してください。
from django.conf import settings
これは上記の形式になるため、モデルの Choice= フィールドの 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.pyLANGUAGE
からの取得のみが言及されていますが、この変数が上書きされる可能性が高くなります。したがって、完全なリストは次の場所から取得できます。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 設定を定義する場合は、前の箇条書きで説明したように、言語を翻訳文字列としてマークしても問題
ugettext()
ありませんが、「ダミー」関数を使用してdjango.utils.translation
ください。モジュール自体が設定に依存し、循環インポートが発生するため、設定ファイル内からインポートしない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'))