2010-07-08 22 views

Respuesta

58

Si quieres algo que se puede utilizar dentro de Django, intente:

from django.conf import settings 

esto será en el formato anterior, por lo que es perfecto para asignación en uno de los modelos choice = fields. (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 ajustes:

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

+0

Bonificación adicional a este método: dado que gettext_noop() es una búsqueda perezosa, los nombres de los idiomas se traducirán según la configuración regional de su usuario en el momento de la representación de la plantilla. Lo que significa que un usuario inglés verá "francés", pero un usuario francés verá "Francais" – Thomas

+0

¿Hay páginas de referencia para los idiomas anteriores? – Hulk

+2

http://code.djangoproject.com/browser/django/trunk/django/conf /global_settings.py le proporcionará la lista completa de los idiomas que admite django de fábrica, y http://docs.djangoproject.com/en/dev/ref/settings/#languages ​​le ofrece una descripción general del uso. Espero que esto ayude. – Thomas

0

que entendí de Django Project que sólo se puede utilizar una función gettext dummy:

Si define una costumbre Configuración de IDIOMAS, como se explicó en la viñeta anterior, está bien marcar los idiomas como cadenas de traducción, pero use un "maniquí"Función, no la de django.utils.translation. Nunca se debe importar django.utils.translation desde el interior de su archivo de configuración, ya que el módulo en sí mismo depende de los ajustes, y que podría causar una importación circular. ".

Me tomó algún tiempo para encontrar la solución, pero finalmente lo consiguió; las opciones del campo del modelo debe tener una tupla con funciones reales de gettext, con una función lambda los del muerto se pueden envolver en las funciones reales de gettext 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')) 
4
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

10

respuestas anteriores mencionar sólo para conseguir LANGUAGE de settings.py, hovewer hay una gran posibilidad de que esta variable será sobrescrito. Por lo tanto, puede obtener la lista completa en django.conf.global_settings.LANGUAGES

from django.db import models 

from django.conf.global_settings import LANGUAGES 

class ModelWithLanguage(models.Model): 
    languages = models.CharField(max_length=7, choices=LANGUAGES) 
Cuestiones relacionadas