
Laravel i18n: Heildarhandbók um alþjóðavæðingu og staðfærslu
Frá fyrstu staðfærsluskrá til rekstrarumhverfis: grunnstilltu þýðingarkerfi Laravel, meðhöndlaðu fleirtölumyndir, lagaðu JSON-varaleiðarvilluna og bættu við snjöllum staðfærsluvarakeðjum fyrir svæðisbundin afbrigði.
Kynntu þér þýðingarkerfi Laravel
Laravel kemur með innbyggðu þýðingarkerfi sem styður tvö skráarsnið: PHP-fylki og JSON. PHP-skrár nota falda lykla sem eru flokkaðir eftir eiginleikum (auth.failed, validation.required). JSON-skrár nota upprunastrenginn sem lykil, sem er einfaldara en styður ekki földun.
composer create-project laravel/laravel my-app
cd my-app
# Laravel includes i18n out of the box
# No extra packages needed for basic usageGrunnstilltu staðfærslustillingar
Stilltu sjálfgefna staðfærslu forritsins og varastaðfærslu í config/app.php. Varastaðfærslan er notuð þegar þýðingarlykil vantar í virku staðfærsluna. Grunnstilltu studdar staðfærslur fyrir forritið og bættu við millibúnaði sem greinir og stillir kjörstaðfærslu notandans.
// 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);
}
}Notaðu þýðingarföll
Laravel býður þrjár leiðir til að þýða strengi: hjálparfallið __() (mælt með), fallið trans() og Blade-tilskipunina @lang. Allar þrjár taka við þýðingarlyklinum og valfrjálsum útskiptiviðföngum. Notaðu __() í PHP-kóða og Blade-sniðmátum og @lang í Blade þegar þú þarft ekki að sérkóða HTML.
// 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',
],
];Meðhöndlaðu fleirtölumyndir
Laravel notar pípuskipta setningagerð fyrir fleirtölumyndir. Einfaldasta myndin er 'apples' => 'Það er eitt epli|Það eru mörg epli'. Fyrir tiltekin bil skaltu nota 'apples' => '{0} Engin epli|{1} Eitt epli|[2,*] :count epli'. Hjálparfallið trans_choice() eða Str::plural() velur rétta mynd út frá fjöldanum.
// 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"
}Bættu við staðfærsluvarakeðjum
Innbyggða varaleið Laravel fer aðeins frá virku staðfærslunni til fallback_locale — ekkert milliskref er til staðar. Notandi með pt-BR sem vantar lykil sér ensku í stað fullgildrar pt-PT-þýðingar. laravel-locale-chain lagar þetta með því að djúpsameina þýðingar úr grunnstillanlegri varakeðju við innlestur.
{{-- 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>Sjálfvirknivæddu þýðingar
Þegar Laravel i18n-uppsetningin er tilbúin skaltu þýða staðfærsluskrárnar með gervigreind. Beindu gervigreindaraðstoðinni að skrá frummálsins eða notaðu skipanalínuviðmót i18n Agent í CI/CD-vinnslurásinni. Bæði PHP- og JSON-þýðingarskrár eru studdar.
// 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 -> enAlgengar gryfjur
Harðkóðuð eintölu- og fleirtölurökvísi
JSON-þýðingar nota ekki varaleið
PHP og JSON blandað saman án þess að forgangsröðin sé skilin
Prófaðu i18n Agent núna
Slepptu þýðingarskránni þinni hér
JSON, YAML, PO, XML, CSV, Markdown, Properties
eða smelltu til að fletta
Markmál