
Laravel i18n: अंतरराष्ट्रीयकरण और स्थानीयकरण की संपूर्ण गाइड
पहली लोकेल फ़ाइल से प्रोडक्शन तक: Laravel की अनुवाद प्रणाली कॉन्फ़िगर करें, बहुवचन संभालें, JSON फ़ॉलबैक बग ठीक करें और क्षेत्रीय वैरिएंट के लिए बेहतर लोकेल फ़ॉलबैक चेन जोड़ें।
Laravel की अनुवाद प्रणाली को समझें
Laravel में पहले से मौजूद अनुवाद प्रणाली दो फ़ाइल फ़ॉर्मैट का समर्थन करती है: PHP ऐरे और JSON। PHP फ़ाइलों में सुविधा के अनुसार व्यवस्थित नेस्टेड कुंजियाँ (auth.failed, validation.required) इस्तेमाल होती हैं। JSON फ़ाइलों में स्रोत स्ट्रिंग को कुंजी के रूप में इस्तेमाल किया जाता है, जो सरल है लेकिन नेस्टिंग का समर्थन नहीं करता।
composer create-project laravel/laravel my-app
cd my-app
# Laravel includes i18n out of the box
# No extra packages needed for basic usageलोकेल सेटिंग्स कॉन्फ़िगर करें
config/app.php में अपने एप्लिकेशन का डिफ़ॉल्ट लोकेल और फ़ॉलबैक लोकेल सेट करें। सक्रिय लोकेल में अनुवाद कुंजी न मिलने पर फ़ॉलबैक लोकेल इस्तेमाल होता है। अपने एप्लिकेशन के समर्थित लोकेल कॉन्फ़िगर करें और यूज़र के पसंदीदा लोकेल का पता लगाकर उसे सेट करने के लिए मिडलवेयर जोड़ें।
// 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);
}
}अनुवाद फ़ंक्शन इस्तेमाल करें
Laravel स्ट्रिंग का अनुवाद करने के तीन तरीके देता है: __() हेल्पर फ़ंक्शन (अनुशंसित), trans() फ़ंक्शन और @lang Blade डायरेक्टिव। तीनों अनुवाद कुंजी और वैकल्पिक रिप्लेसमेंट पैरामीटर स्वीकार करते हैं। PHP कोड और Blade टेम्पलेट में __() इस्तेमाल करें तथा जब HTML को एस्केप करने की आवश्यकता न हो, तब Blade में @lang इस्तेमाल करें।
// 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',
],
];बहुवचन संभालें
Laravel बहुवचन रूपों के लिए पाइप से अलग किए गए सिंटैक्स का इस्तेमाल करता है। इसका सबसे सरल रूप 'apples' => 'There is one apple|There are many apples' है। स्पष्ट रेंज के लिए 'apples' => '{0} No apples|{1} One apple|[2,*] :count apples' इस्तेमाल करें। trans_choice() हेल्पर या Str::plural() संख्या के आधार पर सही रूप चुनता है।
// 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"
}लोकेल फ़ॉलबैक चेन जोड़ें
Laravel का अंतर्निहित फ़ॉलबैक सक्रिय लोकेल से सीधे fallback_locale पर जाता है—बीच में कोई चरण नहीं होता। कोई कुंजी न मिलने पर pt-BR यूज़र को पूरी तरह उपयुक्त pt-PT अनुवाद के बजाय अंग्रेज़ी दिखाई देती है। laravel-locale-chain लोड होने के समय कॉन्फ़िगर की जा सकने वाली फ़ॉलबैक चेन के अनुवादों को डीप-मर्ज करके इसे ठीक करता है।
{{-- 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>अनुवादों को ऑटोमेट करें
Laravel i18n सेटअप पूरा होने के बाद AI की मदद से अपनी लोकेल फ़ाइलों का अनुवाद करें। अपने AI सहायक को स्रोत लोकेल फ़ाइल दें या अपनी CI/CD पाइपलाइन में i18n Agent CLI इस्तेमाल करें। PHP और 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 -> enआम समस्याएँ
हार्डकोड किया गया एकवचन/बहुवचन लॉजिक
JSON अनुवाद फ़ॉलबैक नहीं करते
प्राथमिकता को समझे बिना PHP और JSON मिलाना
i18n Agent अभी आज़माएँ
अपनी अनुवाद फ़ाइल यहाँ छोड़ें
JSON, YAML, PO, XML, CSV, Markdown, Properties
या ब्राउज़ करने के लिए क्लिक करें
लक्षित भाषाएँ