wake-up-neo.com

Django Internationalisierungs-Sprachcodes

Wo finde ich eine Liste von Sprachen und Sprachcodes wie diese.

(Swedish,sv)
(English,en)
28
Hulk
15
histrio

Wenn Sie etwas möchten, das Sie innerhalb von Django verwenden können, versuchen Sie Folgendes:

from Django.conf import settings

dieses Format wird im obigen Format angezeigt, sodass es sich perfekt für die Zuordnung in einem der Felder choice = Ihres Modells eignet. (d. h. user_language = models.CharField(max_length=7, choices=settings.LANGUAGES))

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

Hinweis zur Verwendung von Einstellungen:

Beachten Sie, dass Django.conf.settings kein Modul ist

60
Thomas

Vorherige Antworten erwähnen, dass nur LANGUAGE von settings.py erhalten wird, da die Wahrscheinlichkeit groß ist, dass diese Variable überschrieben wird. So erhalten Sie die vollständige Liste von 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)
15
vishes_shell
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']

Grüße

sachin

4
user3283069

Ich habe unter Django Project verstanden, dass Sie nur eine Dummy-Gettext-Funktion verwenden können:

Wenn Sie, wie im vorigen Aufzählungspunkt erläutert, eine benutzerdefinierte Einstellung für SPRACHEN definieren, können Sie die Sprachen als Übersetzungszeichenfolge markieren. Verwenden Sie jedoch eine "Dummy" ugettext()-Funktion, nicht die in Django.utils.translation. Sie sollten Django.utils.translation niemals aus Ihrer Einstellungsdatei importieren, da dieses Modul selbst von den Einstellungen abhängt und dies zu einem zirkulären Import führen würde. ".

Ich habe einige Zeit gebraucht, um die Lösung zu finden, aber ich habe es endlich bekommen; Die Auswahlmöglichkeiten des Modellfelds müssen über ein Tupel mit echten Gettext-Funktionen verfügen. Mit einer Lambda-Funktion können die Dummys wie folgt in die echten Gettext-Funktionen eingebunden werden:

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'))
0
Paul Bormans