
Laravel i18n: Eksiksiz uluslararasılaştırma ve yerelleştirme rehberi
İlk yerel ayar dosyasından üretime kadar Laravel'in çeviri sistemini yapılandırın, çoğullaştırmayı yönetin, JSON geri dönüşü hatasını giderin ve bölgesel varyantlar için akıllı yerel ayar geri dönüş zincirleri ekleyin.
Laravel'in çeviri sistemini anlayın
Laravel, iki dosya biçimini destekleyen yerleşik bir çeviri sistemiyle gelir: PHP dizileri ve JSON. PHP dosyaları, özelliğe göre düzenlenmiş iç içe anahtarlar kullanır (auth.failed, validation.required). JSON dosyaları kaynak dizeyi anahtar olarak kullanır; bu daha basittir ancak iç içe yerleşimi desteklemez.
composer create-project laravel/laravel my-app
cd my-app
# Laravel includes i18n out of the box
# No extra packages needed for basic usageYerel ayarları yapılandırın
Uygulamanızın varsayılan yerel ayarını ve geri dönüş yerel ayarını config/app.php dosyasında belirleyin. Etkin yerel ayarda bir çeviri anahtarı eksik olduğunda geri dönüş yerel ayarı kullanılır. Uygulamanızın desteklediği yerel ayarları yapılandırın ve kullanıcının tercih ettiği yerel ayarı algılayıp ayarlamak için ara yazılım ekleyin.
// 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);
}
}Çeviri işlevlerini kullanın
Laravel, dizeleri çevirmek için üç yöntem sunar: __() yardımcı işlevi (önerilir), trans() işlevi ve @lang Blade yönergesi. Üçü de çeviri anahtarını ve isteğe bağlı değiştirme parametrelerini kabul eder. PHP kodunda ve Blade şablonlarında __(), HTML'den kaçış yapmanız gerekmediğinde ise Blade'de @lang kullanın.
// 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',
],
];Çoğullaştırmayı yönetin
Laravel, çoğul biçimler için dikey çizgiyle ayrılmış bir söz dizimi kullanır. En basit biçim 'apples' => 'Bir elma var|Birçok elma var' şeklindedir. Açık aralıklar için 'apples' => '{0} Elma yok|{1} Bir elma|[2,*] :count elma' kullanın. trans_choice() yardımcı işlevi veya Str::plural(), sayıya göre doğru biçimi seçer.
// 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"
}Yerel ayar geri dönüş zincirleri ekleyin
Laravel'in yerleşik geri dönüşü yalnızca etkin yerel ayardan fallback_locale değerine gider; arada başka bir adım yoktur. Eksik anahtarı olan pt-BR yerel ayarındaki bir kullanıcı, kullanılabilir durumdaki pt-PT çevirisi yerine İngilizce görür. laravel-locale-chain, yapılandırılabilir geri dönüş zincirindeki çevirileri yükleme sırasında derinlemesine birleştirerek bu sorunu giderir.
{{-- 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>Çevirileri otomatikleştirin
Laravel i18n kurulumunuz tamamlandıktan sonra yerel ayar dosyalarınızı yapay zeka ile çevirin. Yapay zeka yardımcınıza kaynak yerel ayar dosyasını gösterin veya CI/CD işlem hattınızda i18n Agent CLI'ı kullanın. Hem PHP hem de JSON çeviri dosyaları desteklenir.
// 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 -> enYaygın hatalar
Doğrudan kodlanmış tekil/çoğul mantığı
JSON çevirilerinin geri dönüş yapmaması
Önceliği anlamadan PHP ve JSON biçimlerini karıştırmak
i18n Agent'ı şimdi deneyin
Çeviri dosyanızı buraya bırakın
JSON, YAML, PO, XML, CSV, Markdown, Properties
veya göz atmak için tıklayın
Hedef diller