Skip to main content

Wat is lokalisatie

De lokalisatiefunctionaliteit van Laravel biedt een handig mechanisme om vertaalstrings in meerdere talen op te halen. Je gebruikt dit om meerdere talen in je applicatie te ondersteunen. Er zijn twee manieren om vertaalstrings te beheren.
Een standaard Laravel-applicatie bevat geen lang-directory. Om aan te passen publiceer je die met het Artisan-commando lang:publish.

De locale instellen

Standaardlocale

De standaardtaal van de applicatie stel je in via locale in config/app.php. Meestal gebruik je de omgevingsvariabele APP_LOCALE in het .env-bestand.
fallback_locale is de terugvaltaal wanneer een vertaalstring niet bestaat in de opgegeven taal.

De locale tijdens runtime wijzigen

Met de methode setLocale() van de App-facade wijzig je de locale per request.

De huidige locale controleren

Taalbestanden aanmaken

PHP-bestanden

Maak PHP-bestanden aan in de directory lang/{taalcode}/. Ze geven een key-value-array terug.
Voor talen met regionale varianten geef je de directory een naam volgens ISO 15897. Brits Engels is bijvoorbeeld en_GB, niet en-gb.

JSON-formaat

Heb je veel te vertalen strings, dan wordt het JSON-formaat aanbevolen. Maak in de lang/-directory een JSON-bestand aan met de taalcode als naam.
Je definieert de standaardvertaalstrings (Engels) als sleutel.
In het JSON-formaat is de Engelse zin zelf de sleutel, waardoor de Engelse standaardweergave automatisch werkt. Bij talen zonder vertaalbestand wordt de sleutel (de Engelse brontekst) als zodanig getoond.

PHP-bestanden versus JSON-formaat

  • Wanneer je per functionaliteit wilt organiseren, zoals validatiefoutmeldingen
  • Wanneer je de ingebouwde vertalingen van Laravel (validation.php, auth.php enz.) wilt overschrijven
  • Wanneer je hiërarchisch sleutelbeheer nodig hebt
  • Wanneer je veel UI-teksten hebt en het bedenken van sleutels lastig is
  • Wanneer je Engels direct in de templates schrijft en andere talen via vertaalbestanden afhandelt
  • Bij applicaties waar internationalisatie later is toegevoegd

Vertaalstrings ophalen

De __()-helper

De meestgebruikte manier. Bij PHP-bestanden geef je de sleutel op in het formaat “bestandsnaam.sleutel”.
Bestaat de vertaalstring niet, dan wordt de opgegeven sleutel zelf teruggegeven.

Gebruik in Blade-templates

In Blade-templates gebruik je {{ __() }}.
De @lang-directive wordt afgeraden. Tegenwoordig wordt aanbevolen om {{ __() }} te gebruiken.

Placeholders

Je kunt placeholders in de vorm :naam in vertaalstrings opnemen.
Aan het tweede argument van __() geef je een array met vervangwaarden door.
Dit werkt in Blade-templates op dezelfde manier.

Meervoudsvormen

De regels voor meervoudsvormen verschillen per taal. Met het |-teken schakelt Laravel tussen enkelvoud en meervoud.

Eenvoudige meervoudsvormen

In JSON-formaat definieer je dit op dezelfde manier.
Met de functie trans_choice() geef je de hoeveelheid door.

Meervoudsvormen met bereiken

Je kunt gedetailleerdere bereiken opgeven.

Placeholders in meervoudsvormen

Met :count toon je de hoeveelheid. Aan het derde argument geef je extra vervangwaarden door.

Taalbestanden van pakketten overschrijven

Wanneer een pakket van derden eigen taalbestanden heeft, kun je die overschrijven door een gelijknamig bestand te plaatsen in lang/vendor/{pakketnaam}/{taalcode}/. Bijvoorbeeld om de Engelse meldingen van het pakket skyrim/hearthfire aan te passen:

Praktijkvoorbeeld: middleware voor het wisselen tussen Japans en Engels

Een voorbeeldimplementatie van middleware die de locale automatisch wisselt op basis van het URL-pad, de sessie of gebruikersinstellingen.
1

Maak de middleware aan

2

Implementeer de middleware

3

Registreer de middleware

Registreer de middleware in bootstrap/app.php.
4

Voeg een route toe om de locale te wisselen

5

Voeg wisselknoppen toe aan de Blade-template

Voorbeeld van een vertaalbestandsstructuur

Samenvatting

Laatst gewijzigd op 6 september 2026