web-dev-qa-db-fra.com

Codes de langue d'internationalisation Django

Où puis-je trouver une liste de langues et language_code comme ceci.

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

Si vous voulez quelque chose que vous pouvez utiliser depuis Django, essayez:

from Django.conf import settings

ce sera dans le format ci-dessus, le rendant parfait pour l'affectation dans l'un de vos choix de modèles = champs. (c'est-à-dire user_language = models.CharField(max_length=7, choices=settings.LANGUAGES))

LANGUAGES = (
    ('ar', gettext_noop('Arabic')),
    ('bg', gettext_noop('Bulgarian')),
    ('bn', gettext_noop('Bengali')),
    etc....
    )

Remarque sur l'utilisation des paramètres:

Notez que Django.conf.settings n'est pas un module

60
Thomas

Les réponses précédentes mentionnent seulement obtenir LANGUAGE de settings.py , mais il y a de grandes chances que cette variable soit écrasée. Vous pouvez donc obtenir la liste complète de 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']

Cordialement

sachin

4
user3283069

J'ai compris dans Django Project que vous ne pouvez utiliser qu'une fonction fictive gettext:

Si vous définissez un paramètre LANGUAGES personnalisé, comme expliqué dans la puce précédente, vous pouvez marquer les langues en tant que chaînes de traduction, mais utilisez une fonction "factice" ugettext(), et non celle de Django.utils.translation. Vous ne devez jamais importer Django.utils.translation à partir de votre fichier de paramètres, car ce module en lui-même dépend des paramètres, ce qui provoquerait une importation circulaire. ".

Il m'a fallu un certain temps pour trouver la solution, mais je l'ai finalement trouvée. les choix du champ de modèle doivent avoir un Tuple avec de vraies fonctions gettext, avec une fonction lambda, le mannequin peut être encapsulé dans les vraies fonctions gettext comme suit:

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