
Laravel i18n: celovit vodnik po internacionalizaciji in lokalizaciji
Od prve jezikovne datoteke do produkcije: nastavite Laravelov prevajalski sistem, obravnavajte množinske oblike, odpravite napako nadomeščanja pri JSON ter dodajte pametne verige nadomestnih jezikovnih različic za regionalne različice.
Spoznajte Laravelov prevajalski sistem
Laravel ima vgrajen prevajalski sistem, ki podpira dve obliki datotek: polja PHP in JSON. Datoteke PHP uporabljajo ugnezdene ključe, razvrščene po funkcijah (auth.failed, validation.required). Datoteke JSON kot ključ uporabljajo izvorno besedilo, kar je preprosteje, vendar ne podpira gnezdenja.
composer create-project laravel/laravel my-app
cd my-app
# Laravel includes i18n out of the box
# No extra packages needed for basic usageNastavite jezikovne različice
V config/app.php nastavite privzeto in nadomestno jezikovno različico svoje aplikacije. Nadomestna različica se uporabi, kadar v dejavni različici manjka prevajalski ključ. Določite podprte jezikovne različice svoje aplikacije in dodajte vmesno programsko opremo, ki zazna ter nastavi uporabnikovo prednostno različico.
// 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);
}
}Uporabljajte prevajalske funkcije
Laravel ponuja tri načine prevajanja besedil: pomožno funkcijo __() (priporočeno), funkcijo trans() in direktivo Blade @lang. Vse tri sprejmejo prevajalski ključ in neobvezne nadomestne parametre. __() uporabljajte v kodi PHP in predlogah Blade, @lang pa v Blade, kadar Vam ni treba ubežati 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',
],
];Obravnavajte množinske oblike
Laravel za množinske oblike uporablja skladnjo, ločeno z navpičnicami. Najpreprostejša oblika je 'apples' => 'There is one apple|There are many apples'. Za izrecne razpone uporabite 'apples' => '{0} No apples|{1} One apple|[2,*] :count apples'. Pomožna funkcija trans_choice() ali Str::plural() glede na število izbere pravilno obliko.
// 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"
}Dodajte verige nadomestnih jezikovnih različic
Laravelovo vgrajeno nadomeščanje gre samo od dejavne različice do fallback_locale, brez vmesnega koraka. Uporabnik različice pt-BR pri manjkajočem ključu vidi angleščino namesto povsem ustreznega prevoda pt-PT. laravel-locale-chain to odpravi z globokim združevanjem prevodov iz nastavljive nadomestne verige ob nalaganju.
{{-- 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>Avtomatizirajte prevode
Ko je nastavitev Laravel i18n končana, prevedite svoje jezikovne datoteke z umetno inteligenco. Pomočniku umetne inteligence pokažite izvorno jezikovno datoteko ali pa v pipelineu CI/CD uporabite CLI i18n Agent. Podprte so prevajalske datoteke PHP in JSON.
// 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 -> enPogoste pasti
Trdo kodirana logika ednine in množine
Prevodi JSON nimajo nadomestne različice
Mešanje PHP in JSON brez razumevanja prednosti
Preizkusite i18n Agent zdaj
Spustite prevajalsko datoteko sem
JSON, YAML, PO, XML, CSV, Markdown, Properties
ali kliknite za izbiro
Ciljni jeziki