risposta

58

Se si desidera qualcosa che si può utilizzare all'interno di django, provare:

from django.conf import settings 

questo sarà nel formato di cui sopra, che lo rende perfetto per assegnazione in uno dei tuoi modelli scelte = campi. (Cioè user_language = models.CharField(max_length=7, choices=settings.LANGUAGES))

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

Note sull'utilizzo delle impostazioni:

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

+0

Aggiunto bonus a questo metodo: poiché gettext_noop() è una ricerca pigra, i nomi della lingua verranno tradotti in base alle impostazioni locali dell'utente al momento del rendering del modello. Significa che un utente inglese vedrà "Francese" ma un utente francese vedrà "Francais" – Thomas

+0

c'è qualche pagina di riferimento per le lingue di cui sopra .. – Hulk

+2

http://code.djangoproject.com/browser/django/trunk/django/conf /global_settings.py ti fornirà l'elenco completo delle lingue supportate da django, e http://docs.djangoproject.com/en/dev/ref/settings/#languages ​​ti offre una panoramica sull'utilizzo. Spero che questo ti aiuti. – Thomas

0

ho capito da Django Project che è possibile utilizzare solo una funzione gettext dummy:

Se si definisce un costume L'impostazione LANGUAGES, come spiegato nel punto precedente, è OK per contrassegnare le lingue come stringhe di traduzione, ma utilizzare un "dummy"Funzione, non quella in django.utils.translation. Non si dovrebbe mai importare django.utils.translation all'interno del tuo file di impostazioni, perché quel modulo in sé dipende dalle impostazioni, e che causerebbe un'importazione circolare. ".

Mi c'è voluto un po 'di tempo per trovare la soluzione, ma alla fine capito, le scelte di campo modello ha bisogno di avere una tupla con funzioni reali gettext, con una funzione lambda il manichino del possono essere avvolti nelle funzioni reali gettext come segue:

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

saluti

012.

Sachin

10

risposte precedenti menzione ottenendo soltanto LANGUAGE da settings.py, hovewer v'è una grande opportunità che questa variabile verrà sovrascritto. Quindi, è possibile ottenere l'elenco completo da 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) 
Problemi correlati