Где я могу найти список языков и языковой_код, подобный этому.
(Swedish,sv)
(English,en)
Где я могу найти список языков и языковой_код, подобный этому.
(Swedish,sv)
(English,en)
Вики:
http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
Если вам нужно что-то, что вы можете использовать из 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 не модуль
max_length
должно быть 5, в языках, зависящих от страны, есть тире, например. es-mx
- person Kimvais; 18.06.2012
В предыдущих ответах упоминается только получение LANGUAGE
из settings.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)
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'))