我在哪里可以找到像这样的语言和语言代码列表。
(Swedish,sv)
(English,en)
我在哪里可以找到像这样的语言和语言代码列表。
(Swedish,sv)
(English,en)
如果你想要在 Django 中使用某个东西,可以尝试:
from django.conf import settings
这将按照上述格式进行,非常适合分配到您的模型选择字段中(例如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']
敬礼
sachin
(萨钦)我从Django Project中了解到,你只能使用虚拟的gettext函数:
如果您定义了自定义的LANGUAGES设置,如前一部分所述,则可以将语言标记为翻译字符串,但是请使用“虚拟”
ugettext()
函数,而不是django.utils.translation
中的函数。永远不要从设置文件中导入django.utils.translation
,因为该模块本身依赖于设置,并且这将导致循环导入。
我花了一些时间才找到解决方案,但最终我找到了。 模型字段的选择需要有一个包含实际gettext函数的元组,通过lambda函数可以将虚拟的函数包装在实际的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'))
max_length
应该为 5,在特定于国家的语言中有一个破折号,例如es-mx
。 - Kimvais