Коды языков интернационализации Django

Где я могу найти список языков и языковой_код, подобный этому.

(Swedish,sv)
(English,en)

person Hulk    schedule 08.07.2010    source источник


Ответы (5)


Вики:

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

person histrio    schedule 08.07.2010
comment
Не все эти языковые коды поддерживаются. См. основной список в файле django.conf.locale.LANG_INFO. - person spiderlama; 20.09.2017
comment
Нет никакой гарантии, что то, что Django на самом деле реализовал, точно соответствует этому списку, который не поддерживается Django. - person kloddant; 05.09.2018
comment
i18nguy.com/unicode/language-identifiers.html - person jackotonye; 13.11.2018

Если вам нужно что-то, что вы можете использовать из 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 не модуль

person Thomas    schedule 08.07.2010
comment
Дополнительный бонус к этому методу: поскольку gettext_noop() является ленивым поиском, названия языков будут переведены в зависимости от локали вашего пользователя во время рендеринга шаблона. Это означает, что английский пользователь увидит французский, а французский пользователь увидит французский. - person Thomas; 08.07.2010
comment
есть ли какие-либо справочные страницы для вышеуказанных языков .. - person Hulk; 08.07.2010
comment
code.djangoproject.com/browser/django/trunk/django/ conf/ даст вам полный список языков, которые django поддерживает из коробки, и docs.djangoproject.com/en/dev/ref/settings/#languages дает вам обзор использования. Надеюсь это поможет. - person Thomas; 09.07.2010
comment
max_length должно быть 5, в языках, зависящих от страны, есть тире, например. es-mx - person Kimvais; 18.06.2012
comment
@Kimvais: «sr-latn» состоит из 7 символов. - person ; 18.06.2012
comment
Список языков в этом параметре не совпадает со списком значений, принимаемых параметром LANGUAGE_CODE. Примером может служить значение по умолчанию "en-us", которого нет в глобальной настройке LANGUAGES. - person Filipe Correia; 23.04.2014

В предыдущих ответах упоминается только получение 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)
person vishes_shell    schedule 17.02.2016

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']

С уважением

сачин

person user3283069    schedule 01.01.2015

Из 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'))
person Paul Bormans    schedule 28.10.2012