it-swarm.com.ru

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

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

(Swedish,sv)
(English,en)
28
Hulk
15
histrio

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

60
Thomas

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

С уважением

сэчин

4
user3283069

Я понял из 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'))
0
Paul Bormans