
Laravel i18n: complete handleiding voor internationalisatie en lokalisatie
Van je eerste localebestand tot productie: configureer het vertaalsysteem van Laravel, verwerk meervoudsvormen, los de JSON-terugvalfout op en voeg slimme terugvalketens toe voor regionale varianten.
Het vertaalsysteem van Laravel begrijpen
Laravel heeft een ingebouwd vertaalsysteem dat twee bestandsindelingen ondersteunt: PHP-arrays en JSON. PHP-bestanden gebruiken geneste sleutels die per functie zijn geordend (auth.failed, validation.required). JSON-bestanden gebruiken de brontekst als sleutel. Dat is eenvoudiger, maar ondersteunt geen nesten.
composer create-project laravel/laravel my-app
cd my-app
# Laravel includes i18n out of the box
# No extra packages needed for basic usageLocale-instellingen configureren
Stel de standaardlocale en terugvallocale van je toepassing in config/app.php in. De terugvallocale wordt gebruikt wanneer een vertaalsleutel in de actieve locale ontbreekt. Configureer de ondersteunde locales en voeg middleware toe die de voorkeurslocale van de gebruiker detecteert en instelt.
// config/app.php
return [
'locale' => 'en', // Default locale
'fallback_locale' => 'en', // Fallback when key is missing
'faker_locale' => 'en_US',
// Available locales (for your language switcher)
'available_locales' => ['en', 'de', 'ja', 'es', 'fr', 'pt-BR'],
];// app/Http/Middleware/SetLocale.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class SetLocale
{
public function handle(Request $request, Closure $next)
{
$locale = $request->segment(1); // e.g. /de/about
if (in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return $next($request);
}
}Vertaalfuncties gebruiken
Laravel biedt drie manieren om tekenreeksen te vertalen: de hulpfunctie __() (aanbevolen), de functie trans() en de Blade-richtlijn @lang. Alle drie accepteren de vertaalsleutel en optionele vervangingsparameters. Gebruik __() in PHP-code en Blade-sjablonen en @lang in Blade wanneer je HTML niet hoeft te escapen.
// lang/en/messages.php
return [
'welcome' => 'Welcome to our application',
'greeting' => 'Hello, :name!',
'nav' => [
'home' => 'Home',
'about' => 'About',
'settings' => 'Settings',
],
];
// lang/de/messages.php
return [
'welcome' => 'Willkommen in unserer Anwendung',
'greeting' => 'Hallo, :name!',
'nav' => [
'home' => 'Startseite',
'about' => 'Über uns',
'settings' => 'Einstellungen',
],
];Meervoudsvormen verwerken
Laravel gebruikt een door sluistekens gescheiden syntaxis voor meervoudsvormen. De eenvoudigste vorm is 'apples' => 'There is one apple|There are many apples'. Gebruik voor expliciete bereiken 'apples' => '{0} No apples|{1} One apple|[2,*] :count apples'. De hulpfunctie trans_choice() of Str::plural() selecteert op basis van het aantal de juiste vorm.
// lang/en.json
{
"Welcome back!": "Welcome back!",
"You have :count new notifications": "You have :count new notifications",
"Copyright :year :company": "Copyright :year :company"
}
// lang/de.json
{
"Welcome back!": "Willkommen zurück!",
"You have :count new notifications": "Sie haben :count neue Benachrichtigungen",
"Copyright :year :company": "Copyright :year :company"
}Locale-fallbackketens toevoegen
De ingebouwde terugval van Laravel gaat alleen van de actieve locale naar fallback_locale; er is geen tussenstap. Een gebruiker met pt-BR en een ontbrekende sleutel ziet Engels in plaats van de prima vertaling voor pt-PT. laravel-locale-chain verhelpt dit door vertalingen uit een configureerbare terugvalketen tijdens het laden diep samen te voegen.
{{-- Simple translation --}}
<h1>{{ __('messages.welcome') }}</h1>
{{-- With variables --}}
<p>{{ __('messages.greeting', ['name' => $user->name]) }}</p>
{{-- Using @lang directive --}}
<h2>@lang('messages.nav.home')</h2>
{{-- JSON translations (use the string itself as key) --}}
<p>{{ __('Welcome back!') }}</p>
{{-- Pluralization --}}
{{ trans_choice('{0} No items|{1} One item|[2,*] :count items', $count) }}
{{-- Inside Blade components --}}
<x-button>{{ __('messages.nav.settings') }}</x-button>Vertalingen automatiseren
Nu je Laravel-i18n-configuratie klaar is, kun je de localebestanden met AI vertalen. Laat je AI-assistent het bronlocalebestand verwerken of gebruik de CLI van i18n Agent in je CI/CD-pipeline. Zowel PHP- als JSON-vertaalbestanden worden ondersteund.
// Install locale chain package
composer require i18n-agent/laravel-locale-chain
// config/locale-chain.php
return [
'chains' => [
'pt-BR' => ['pt-BR', 'pt', 'en'],
'zh-Hant-TW' => ['zh-Hant-TW', 'zh-Hant', 'zh', 'en'],
'es-419' => ['es-419', 'es', 'en'],
],
];
// In AppServiceProvider::boot()
use I18nAgent\LocaleChain\LocaleChainServiceProvider;
// The package automatically deep-merges translations
// across the chain: pt-BR -> pt -> enVeelvoorkomende valkuilen
Hardgecodeerde logica voor enkelvoud en meervoud
JSON-vertalingen vallen niet terug
PHP en JSON combineren zonder de voorrang te begrijpen
Probeer i18n Agent nu
Zet je vertaalbestand hier neer
JSON, YAML, PO, XML, CSV, Markdown, Properties
of klik om een bestand te selecteren
Doeltalen