Unterschiede zwischen get_language() und request.LANGUAGE_CODE in Django und deren Anwendung

Django bietet leistungsstarke Funktionen zur Unterstützung mehrerer Sprachen, die es ermöglichen, Webanwendungen in verschiedenen Sprachen zu entwickeln. In diesem Artikel werden wir die Unterschiede, die Funktionsweise und die Anwendungsmöglichkeiten von django.utils.translation.get_language() und request.LANGUAGE_CODE, zwei Übersetzungs- und Lokalisierungswerkzeugen von Django, im Detail erläutern.

1. django.utils.translation.get_language()

Funktionsweise

get_language() ist eine Funktion, die den aktuell aktiven Sprachcode im Django-Übersetzungssystem zurückgibt.

Diese Funktion informiert darüber, auf welche Sprache das Übersetzungssystem derzeit eingestellt ist, und dies wird durch folgende Schritte bestimmt:

  • LocaleMiddleware bestimmt die Sprache basierend auf Benutzeranfragen, Sitzungen, Cookies, Browsereinstellungen usw.
  • Die bestimmte Sprache wird vom Django-Übersetzungssystem aktiviert.
  • get_language() gibt die aktivierte Sprache zurück.

Rückgabewert

Ein Sprachcode (z. B. 'en', 'ko', 'fr') wird als String zurückgegeben. Wenn keine aktive Sprache vorhanden ist, wird die Standardeinstellung für die Sprache (settings.LANGUAGE_CODE) zurückgegeben.

Anwendungsbeispiel

Wenn verschiedene Nachrichten oder Inhalte je nach aktueller aktiver Sprache an den Benutzer bereitgestellt werden müssen.

Wenn geschäftslogische Abläufe je nach Sprache unterschiedlich implementiert werden müssen.

from django.utils.translation import get_language
current_language = get_language()
if current_language == 'ko':
    print("Die aktuell aktivierte Sprache ist Koreanisch.")

2. request.LANGUAGE_CODE

Funktionsweise

request.LANGUAGE_CODE ist der Sprachcode, der basierend auf der HTTP-Anfrage bestimmt wird.

Dieser Wert wird durch den Accept-Language-Header des Browsers, URL-Parameter, Sitzungen oder Cookies festgelegt.

  • Der Client sendet Sprachpräferenzen zusammen mit der HTTP-Anfrage an den Server.
  • LocaleMiddleware analysiert diese Informationen und wählt die entsprechende Sprache aus.
  • Die gewählte Sprache wird in request.LANGUAGE_CODE gesetzt.

Rückgabewert

Der Sprachcode, der basierend auf der Anfrage bestimmt wurde (z. B. 'en', 'ko').

Anwendungsbeispiel

Wenn benutzerdefinierte Inhalte bereitgestellt werden sollen, die auf der Sprache des Browsers des Benutzers basieren.

Wenn bei mehrsprachigen APIs die Antwortdaten je nach angeforderter Sprache unterschiedlich behandelt werden sollen.

def my_view(request):
    user_language = request.LANGUAGE_CODE
    if user_language == 'fr':
        return HttpResponse("Bienvenue!")
    return HttpResponse("Welcome!")

3. Zusammenfassung der Unterschiede

Merkmal get_language() request.LANGUAGE_CODE
Funktionsweise Gibt die aktuell aktivierte Sprache zurück Gibt die Sprache zurück, die in der HTTP-Anfrage festgelegt ist
Festlegung Aktivierte Sprache des Übersetzungssystems Sprache, die von LocaleMiddleware festgelegt wurde
Verwendbarkeit In Django-Code allgemein verfügbar In View-Funktionen verfügbar
Rückgabewert Aktivierter Sprachcode Anfragebasierter Sprachcode

4. Vergleich der Anwendungsmöglichkeiten

  • get_language() Anwendung

    Wenn Inhalte oder Logik basierend auf der aktuell aktivierten Sprache verzweigt werden sollen.

    Beispiel: Funktionen, die nur in bestimmten Sprachen ausgeführt werden, implementieren oder übersetzte Strings selektiv verwenden müssen.

  • request.LANGUAGE_CODE Anwendung

    Wenn benutzerdefinierte Inhalte basierend auf der angeforderten Sprache bereitgestellt werden sollen.

    Beispiel: Eine API, die die Antwortsprache dynamisch basierend auf der Benutzeranfrage ändern muss.

5. Fazit

get_language() und request.LANGUAGE_CODE sind zwei Werkzeuge, die in Django zur effektiven Implementierung von Mehrsprachigkeit bereitgestellt werden, deren Verwendung und Funktionsweise jedoch unterschiedlich ist.

get_language() ist nützlich, wenn man auf der Grundlage der aktuell aktivierten Sprache arbeiten muss. Es funktioniert mit der vom Übersetzungssystem festgelegten Sprache und ist in Situationen geeignet, in denen die Verarbeitung von Templates oder übersetzten Strings erforderlich ist.

request.LANGUAGE_CODE arbeitet auf der Grundlage der im HTTP-Antrag enthaltenen Sprachinformationen des Benutzers. Es ist nützlich, um Inhalte je nach bevorzugter Sprache des Benutzers anzupassen oder Antworten für mehrsprachige APIs bereitstellen zu können.

Durch die angemessene Nutzung dieser beiden Werkzeuge kann eine präzisere Mehrsprachigkeitsunterstützung in Django-Anwendungen erreicht werden, was die Benutzererfahrung erheblich verbessern kann. Wählen Sie die passenden Werkzeuge aus, um einen effizienten und flexiblen mehrsprachigen Service zu bieten! 😊