[Solved] Django internationalization language codes [closed]

Where can I find list of languages and language_code like this.

Enquirer: Hulk


Solution #2:

If you want something you can use from within django, try:

from django.conf import settings

this will be in the format above, making it perfect for assignment in one of your models choices= fields. (i.e. user_language = models.CharField(max_length=7, choices=settings.LANGUAGES))

    ('ar', gettext_noop('Arabic')),
    ('bg', gettext_noop('Bulgarian')),
    ('bn', gettext_noop('Bengali')),

Note about using settings:

Note that django.conf.settings isn’t a module

Respondent: Thomas

Solution #3:

Previous answers mention only getting LANGUAGE from settings.py, hovewer there is a big chance that this variable will be overwritten. So, you can get the full list from 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)
Respondent: vishes_shell

Solution #4:

from django.conf import settings

 #note settings is an object , hence you cannot import its contents


 #note LANGUAGES is a tuple of tuples

 lang_dict = dict(settings.LANGUAGES)

 #use lang_dict for your query.

 print lang_dict['en']



Respondent: user3283069

Solution #5:

I understood from Django Project that you can only use a dummy gettext function:

If you define a custom LANGUAGES setting, as explained in the previous bullet, it’s OK to mark the languages as translation strings — but use a “dummy” ugettext() function, not the one in django.utils.translation. You should never import django.utils.translation from within your settings file, because that module in itself depends on the settings, and that would cause a circular import.”.

It took me some time to find the solution, but I finally got it; the choices of the model field needs to have a tuple with real gettext functions, with a lambda function the dummy’s can be wrapped in the real gettext functions as follows:

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'))
Respondent: Paul Bormans

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.