Antworten:
Von besonderem Interesse sind Funktionen, django.utils.translation.get_language()
die die im aktuellen Thread verwendete Sprache zurückgeben. Siehe Dokumentation .
Oder Sie können dies auch in Ihren Ansichten erhalten
request.LANGUAGE_CODE
django.utils.translation.get_language()
django.utils.translation.get_language()
ist immer eine bessere Lösung.
Achten Sie auf die Methode, mit der Sie die Sprache erhalten . Abhängig von der Methode verwendet Django verschiedene Methoden und Informationen, um die richtige Sprache zu bestimmen .
Wenn Sie die django.utils.translation.get_language()
Funktion verwenden, ist sie mit der Thread- Sprache verknüpft . Vor Django 1.8 wurde es immer zurückgegeben, settings.LANGUAGE_CODE
wenn Übersetzungen deaktiviert waren. Wenn Sie die Thread-Sprache manuell überschreiben möchten, können Sie die Funktionen override()
oder activate()
verwenden, die nicht sehr explizit benannt, aber dennoch nützlich sind:
from django.utils import translation
with translation.override('fr'):
print(_("Hello")) # <= will be translated inside the with block
translation.activate('fr') # <= will change the language for the whole thread.
# You then have to manually "restore" the language with another activate()
translation.activate('en') # <= change languages manually
Wenn Sie möchten, dass Django den Pfad und / oder die Anforderung überprüft (Sprachcookie, ...) , was viel häufiger vorkommt, z . B. www.example.com/en/<somepath>
vs www.example.com/fr/<somepath>
, verwenden Sie django.utils.translation.get_language_from_request(request, check_path=False)
. Außerdem wird immer eine gültige Sprache zurückgegebensettings.LANGUAGES
Ich fand es nicht sehr einfach, diese Unterschiede über Google zu diesem Thema zu finden, daher dient sie hier als weitere Referenz.
django.utils.translation
, dass dies keine Übersetzungen sind. Der bereitgestellte Link enthält einen Rechtschreibfehler. Im Snippet ist es richtig.
django.utils.translation.get_language()
und django.utils.translation.get_language_from_request(request, check_path)
. Wenn Sie dies sehen, sollten Sie Letzteres verwenden check_path = True
, um die Sprache zu erhalten, in der Ihre Vorlage gerendert wird.
Um dies hinzuzufügen, django.utils.translation.get_language()
sollten Sie berücksichtigen, dass dieser Ansatz nicht funktioniert, wenn dieser Codeabschnitt asynchron aufgerufen wird (z. B. als Sellerie-Aufgabe), da er in einem anderen Thread ausgeführt wird.
Sie können dies verwenden
from django.utils import translation
translation.get_language()
Sie können die Systeminformationen lesen locale
.