
Laravel i18n: teljes nemzetköziesítési és lokalizációs útmutató
Az első területifájltól az éles környezetig: állítsa be a Laravel fordítási rendszerét, kezelje a többes számot, javítsa a JSON-tartalék hibáját, és adjon intelligens láncokat a regionális változatokhoz.
A Laravel fordítási rendszerének megértése
A Laravel beépített fordítási rendszere két fájlformátumot támogat: PHP-tömböket és JSON-t. A PHP-fájlok funkciók szerint rendezett, egymásba ágyazott kulcsokat használnak (auth.failed, validation.required). A JSON a forrásszöveget használja kulcsként, ami egyszerűbb, de nem támogat beágyazást.
composer create-project laravel/laravel my-app
cd my-app
# Laravel includes i18n out of the box
# No extra packages needed for basic usageTerületi beállítások konfigurálása
Állítsa be az alkalmazás alapértelmezett és tartalékterületét a config/app.php fájlban. A tartalékot akkor használja, ha az aktív területről hiányzik egy kulcs. Adja meg a támogatott területeket, és middleware segítségével észlelje és állítsa be a felhasználó előnyben részesített területét.
// 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);
}
}Fordítási függvények használata
A Laravel három fordítási módot kínál: __() segédfüggvény (ajánlott), trans() függvény és @lang Blade-direktíva. Mindegyik fordítási kulcsot és választható helyettesítési paramétereket fogad. PHP-kódban és Blade-sablonokban __(), HTML escape-elés nélkül Blade-ben @lang szükséges.
// 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',
],
];Többes szám kezelése
A Laravel csőjellel elválasztott alakokat használ. Egyszerű forma: 'apples' => 'There is one apple|There are many apples'. Kifejezett tartományokhoz: 'apples' => '{0} No apples|{1} One apple|[2,*] :count apples'. A trans_choice() segéd vagy Str::plural() a szám alapján választ.
// 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"
}Területi tartalékláncok hozzáadása
A Laravel beépített tartaléka csak az aktív területről a fallback_locale értékre vált — nincs köztes lépés. Egy hiányzó kulccsal találkozó pt-BR felhasználó a megfelelő pt-PT helyett angolt lát. A laravel-locale-chain ezt beállítható láncból betöltéskor mélyen egyesített fordításokkal javítja.
{{-- 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>Fordítások automatizálása
A Laravel i18n beállítása után fordítsa le területifájljait mesterséges intelligenciával. Irányítsa az MI-segédet a forrásfájlra, vagy használja az i18n Agent parancssori eszközét a CI/CD-folyamatban. PHP- és JSON-fájlokat is támogat.
// 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 -> enGyakori buktatók
Beégetett egyes-/többesszám-logika
A JSON-fordítások nem váltanak tartalékra
PHP és JSON keverése az elsőbbség ismerete nélkül
Try i18n Agent Now
Drop your translation file here
JSON, YAML, PO, XML, CSV, Markdown, Properties
or click to browse
Target languages