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 vialocale 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 methodesetLocale() van de App-facade wijzig je de locale per request.
De huidige locale controleren
Taalbestanden aanmaken
PHP-bestanden
Maak PHP-bestanden aan in de directorylang/{taalcode}/. Ze geven een key-value-array terug.
JSON-formaat
Heb je veel te vertalen strings, dan wordt het JSON-formaat aanbevolen. Maak in delang/-directory een JSON-bestand aan met de taalcode als naam.
PHP-bestanden versus JSON-formaat
Wanneer PHP-bestanden geschikt zijn
Wanneer PHP-bestanden geschikt zijn
- Wanneer je per functionaliteit wilt organiseren, zoals validatiefoutmeldingen
- Wanneer je de ingebouwde vertalingen van Laravel (
validation.php,auth.phpenz.) wilt overschrijven - Wanneer je hiërarchisch sleutelbeheer nodig hebt
Wanneer het JSON-formaat geschikt is
Wanneer het JSON-formaat geschikt is
- 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”.
Gebruik in Blade-templates
In Blade-templates gebruik je{{ __() }}.
Placeholders
Je kunt placeholders in de vorm:naam in vertaalstrings opnemen.
__() geef je een array met vervangwaarden door.
Meervoudsvormen
De regels voor meervoudsvormen verschillen per taal. Met het|-teken schakelt Laravel tussen enkelvoud en meervoud.
Eenvoudige meervoudsvormen
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 inlang/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
Manieren om vertaalstrings te definiëren
Manieren om vertaalstrings te definiëren
Veelgebruikte functies en facades
Veelgebruikte functies en facades
Gebruik in Blade
Gebruik in Blade