Verschillen en toepassingen van get_language() en request.LANGUAGE_CODE in Django

Django biedt sterke ondersteuning voor meertaligheid, waarmee je webapplicaties in verschillende talen kunt ontwikkelen. In dit artikel zullen we de verschillen en werking van twee van Django's vertaal- en lokalisatietools, django.utils.translation.get_language() en request.LANGUAGE_CODE, grondig onderzoeken, evenals hun specifieke toepassingen.

1. django.utils.translation.get_language()

Werking

get_language() is een functie die de momenteel geactiveerde taalcodes in het Django vertalingssysteem retourneert.

Deze functie vertelt je in welke taal het vertalingssysteem momenteel is ingesteld, en dit wordt bepaald aan de hand van de volgende stappen:

  • LocaleMiddleware bepaalt de taal op basis van gebruikersverzoeken, sessies, cookies, browserinstellingen, enz.
  • De vastgestelde taal wordt geactiveerd door het Django vertalingssysteem.
  • get_language() retourneert de geactiveerde taal.

Teruggegeven waarde

Er wordt een taalcodestring geretourneerd (bijvoorbeeld 'en', 'ko', 'fr'). Als er geen geactiveerde taal is, wordt de standaardtaalinstelling (settings.LANGUAGE_CODE) geretourneerd.

Voorbeeld van toepassing

Wanneer je verschillende berichten of inhoud aan gebruikers wilt bieden op basis van de momenteel actieve taal.

Bij het implementeren van verschillende bedrijfslogica voor elke taal.

from django.utils.translation import get_language
current_language = get_language()
if current_language == 'ko':
    print("De currently actieve taal is het Koreaans.")

2. request.LANGUAGE_CODE

Werking

request.LANGUAGE_CODE is de taalcodes die zijn vastgesteld op basis van de HTTP-aanvraag.

Deze waarde wordt ingesteld door de Accept-Language header van de browser, URL-parameters, sessies of cookies.

  • De client stuurt taalvoorkeurinformatie samen met de HTTP-aanvraag naar de server.
  • LocaleMiddleware analyseert deze informatie en kiest de juiste taal.
  • De gekozen taal wordt ingesteld op request.LANGUAGE_CODE.

Teruggegeven waarde

De taalcodes die zijn vastgesteld op basis van het verzoek (bijvoorbeeld 'en', 'ko').

Voorbeeld van toepassing

Wanneer je gepersonaliseerde inhoud wilt aanbieden die aansluit bij de taal van de browser van de gebruiker.

Bij het verwerken van verschillende responsgegevens op basis van de opgevraagde taal in een meertalige API.

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

3. Samenvatting van de verschillen

Kenmerk get_language() request.LANGUAGE_CODE
Werking Retourneert de momenteel geactiveerde taal Retourneert de talen die zijn ingesteld op basis van de HTTP-aanvraag
Instelling Geactiveerde taal in het vertalingssysteem Taal ingesteld door LocaleMiddleware
Beschikbaarheid Beschikbaar in de gehele Django-code Beschikbaar in de view-functie
Retourneerde waarde Geactiveerde taalcodes Op verzoek gebaseerde taalcodes

4. Vergelijking van toepassingen

  • get_language() toepassing

    Wanneer je inhoud of logica wilt splitsen op basis van de momenteel geactiveerde taal.

    Bijvoorbeeld: het implementeren van functionaliteiten die alleen in een bepaalde taal worden uitgevoerd of het selectief gebruiken van vertaalde strings.

  • request.LANGUAGE_CODE toepassing

    Wanneer je gepersonaliseerde inhoud wilt aanbieden op basis van de door de gebruiker aangevraagde taal.

    Bijvoorbeeld: een API die dynamisch de responstaal moet wijzigen op basis van gebruikersverzoeken.

5. Conclusie

get_language() en request.LANGUAGE_CODE zijn twee tools die worden aangeboden om meertalige ondersteuning effectief te implementeren in Django, maar elke tool heeft zijn eigen doel en werkingsmechanisme.

get_language() is nuttig wanneer je moet werken op basis van de momenteel geactiveerde taal. Het draait op de door het vertalingssysteem ingestelde taal en is geschikt voor situaties waar sjablonen of verwerkte vertaalstrings nodig zijn.

request.LANGUAGE_CODE werkt op basis van de taalinformatie die is opgenomen in de HTTP-aanvraag van de gebruiker. Dit is nuttig om inhoud te stroomlijnen op basis van de voorkeurstaal van de gebruiker of om meertalige API-responsen te bieden.

Als je deze twee tools op de juiste manier gebruikt, kun je geavanceerdere meertalige ondersteuning implementeren in je Django-toepassing en de gebruikerservaring aanzienlijk verbeteren. Kies de juiste tool voor elke situatie en bied een efficiënte en flexibele meertalige service! 😊