topics relaciones multi language_code idioma i18n español docs djangoproject python django internationalization django-views django-i18n

python - relaciones - https docs djangoproject com en 2.0 topics i18n



Códigos de idioma de internacionalización Django (5)

¿Dónde puedo encontrar una lista de idiomas y language_code como este.

(Swedish,sv) (English,en)


Entendí de Django Project que solo se puede usar una función de obtención de texto ficticio:

Si define una configuración de IDIOMAS personalizada, como se explica en la viñeta anterior, está bien marcar los idiomas como cadenas de traducción, pero use una función ugettext() " ugettext() ", no la de django.utils.translation . Nunca debe importar django.utils.translation desde su archivo de configuración, ya que ese módulo en sí mismo depende de la configuración, y eso causaría una importación circular ".

Me tomó un tiempo encontrar la solución, pero finalmente la conseguí; las opciones del campo del modelo deben tener una tupla con funciones reales de obtención de texto, con una función lambda que se puede incluir en las funciones de obtención de texto real de la siguiente manera:

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


Las respuestas anteriores mencionan solo la obtención del LANGUAGE de settings.py , hovewer, existe una gran posibilidad de que esta variable se sobrescriba. Por lo tanto, puede obtener la lista completa 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)


Si quieres algo que puedas usar desde django, prueba:

from django.conf import settings

estará en el formato anterior, lo que lo hace perfecto para la asignación en uno de los campos de opciones de su elección. (es decir, user_language = models.CharField(max_length=7, choices=settings.LANGUAGES) )

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

Nota sobre el uso de la configuración:

Tenga en cuenta que django.conf.settings no es un módulo



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

Saludos

sachin