37

我在哪里可以找到这样的语言列表和语言代码。

(Swedish,sv)
(English,en)
4

5 回答 5

64

如果您想要可以在 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....
    )

使用设置的注意事项:

注意 django.conf.settings 不是一个模块

于 2010-07-08T07:56:59.020 回答
22

以前的答案只提到LANGUAGEsettings.py获取,但是这个变量很有可能会被覆盖。所以,你可以从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)
于 2016-02-17T09:57:55.623 回答
21

维基:

http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

于 2010-07-08T06:06:53.577 回答
3
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']

问候

萨钦

于 2015-01-01T00:14:20.313 回答
0

我从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'))
于 2012-10-28T15:25:17.073 回答