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_CODEwenn Ü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.