Où puis-je trouver une liste de langues et language_code comme ceci.
(Swedish,sv)
(English,en)
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....
)
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)
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
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 deDjango.utils.translation
. Vous ne devez jamais importerDjango.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'))