Ich ermittle die Sprachpräferenz eines Benutzers durch einen Drittanbieter-Dienst, bei dem er auch registriert ist. Dieser Dienst stellt mir einen Ländercode zur Verfügung (z. B. en_US
). Wenn ich nicht den entsprechenden Sprachcode in settings.LANGUAGES
habe, bietet Django einen integrierten (einfachen) Weg, um die beste Fallback-Auswahl aus settings.languages
(z. B. en-gb
) zu bestimmen.
Natürlich weiß ich, dass ich ein paar String-Vergleiche des Locale-Codes usw. selbst machen könnte, nur neugierig, ob es eine bessere Lösung gibt!
Sie können den Code sehen, den Django verwendet, um die Sprache basierend auf einer Anfrage zu bestimmen: hier . Leider scheint es keine nützliche Dienstprogrammfunktion für das zu geben, was Sie tun. Die verwendete Logik ist jedoch trivial - nur lop das Ende aus Wenn die Untersprache nicht unterstützt wird und suchen Sie nach der Hauptsprache als Fallback. Dies würde Sie jedoch nicht von en-us
zu en-gb
bringen.
Übrigens, die to_locale
und to_language
Funktionen in dieser Datei könnten für Sie von Interesse sein.
Tags und Links python django locale internationalization