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 dedjango.utils.translation
. Nunca debe importardjango.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:
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