Laravel هڪ ايپليڪيشن آهي جيڪا مقامي هجڻ لاءِ ٺهيل آهي، مختلف ٻولين ۽ ثقافتن کي اپنائڻ لاءِ. لوڪلائيزيشن بين الاقوامي ايپليڪيشنن کي ترجمي ذريعي هڪ مخصوص ٻولي ۾ ترتيب ڏئي ٿو.
localhost
. جيڪڏهن نه، تبديل ڪريو localhost
توهان جي پنهنجي ڊومين جو نالو يا IP پتي سان (توهان جي انسٽاليشن تي منحصر آهي).Laravel ۾، ٻين ڪيترن ئي فريم ورڪ وانگر، اسين مختلف ٻولين لاءِ ترجمي کي الڳ فائلن ۾ محفوظ ڪري سگھون ٿا. Laravel ترجمو فائلن کي منظم ڪرڻ جا ٻه طريقا آهن:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;انهن ٻولين لاءِ جيڪي علائقي جي لحاظ کان مختلف آهن، توهان کي انهن جو نالو ڏيڻ گهرجي directory/file
ISO 15897 جي مطابق ٻولي. مثال طور، UK انگريزي لاءِ توهان استعمال ڪندا en_GB
جي بدران en-gb
. هن آرٽيڪل ۾، اسين ٻئي طريقي تي ڌيان ڏينداسين، پر ساڳيو ئي پهرين لاءِ (سواءِ ته ڪيئن ترجمي جي چاٻين جو نالو ۽ ٻيهر حاصل ڪيو ويو آهي).
ھاڻي اچو ته ڏانھن وڃو resources/views/welcome.blade.php
فائل ۽ ان جي مواد کي تبديل ڪريو body
اسان سان ٽيگ ڪريو، جيئن:
<body class="antialiased">
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
Welcome to our website
</div>
</div>
</div>
</body>
اسان شروع ڪنداسين اسان جي لوڪلائيزيشن خوش آمديد پيغام، جيڪو Laravel ۾ واقعي آسان آهي. توهان کي صرف اهو ڪرڻو آهي ته هيٺ ڏنل ڪوڊ سان "اسان جي ويب سائيٽ تي ڀليڪار" متن کي تبديل ڪريو. {{ __('Welcome to our website') }}
. هي لاراول کي هدايت ڪندو ته "اسان جي ويب سائيٽ تي ڀلي ڪري آيا" ڊفالٽ طور ڏيکاريdefinita ۽ ھن اسٽرنگ جي ترجمي لاءِ ڏسو جيڪڏھن انگريزي کان سواءِ ڪا ٻي ٻولي ٺھيل آھي (اسان ان کي بعد ۾ حاصل ڪنداسين). انگريزي کي ڊفالٽ ٻولي طور مقرر ڪيو ويندوdefiاسان جي ايپ جي رات، تنهن ڪري ڊفالٽ طورdefinita اسان صرف متن ڏيکارينداسين "اسان جي ويب سائيٽ تي ڀلي ڪري آيا". جيڪڏهن جڳهه مختلف آهي، اسان لاڳاپيل ترجمي کي ڳولڻ جي ڪوشش ڪنداسين جيڪا هڪ لمحي ۾ ٺاهي ويندي.
پر Laravel ڪيئن ڄاڻي ٿو ته موجوده ٻولي ڪهڙي آهي يا ڪهڙيون ٻوليون ايپليڪيشن ۾ موجود آهن؟ اهو ايپ ۾ مقامي ترتيبن کي ڏسڻ سان ڪري ٿو config/app.php
. ھن فائل کي کوليو ۽ انھن ٻن ساٿين جي سرن کي ڏسو:
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
مٿي ڏيکاريل وضاحتون ڪنجيون هجڻ گهرجن خود وضاحتي، پر مختصر ۾، ڪنجي locale
اڳئين ڪمري تي مشتمل آهيdefiتوهان جي اپليڪيشن جي رات (گهٽ ۾ گهٽ، جيڪڏهن ڪوڊ ۾ ڪو ٻيو لوڪل مقرر نه ڪيو ويو آهي). ۽ جي fallback_locale
اهو ان صورت ۾ چالو ٿئي ٿو جڏهن اسان اسان جي ايپليڪيشن ۾ هڪ غير موجود جڳهه مقرر ڪيو.
جڏهن ته اسان وٽ هي فائل کليل آهي، اچو ته اسان جي سهولت لاءِ هڪ نئين ڪيئي شامل ڪريون سڀني هنڌن جي لسٽ ۾ جيڪي اسان جي ايپليڪيشن سپورٽ ڪندي. اسان ان کي بعد ۾ استعمال ڪنداسين جڏهن مقامي سوئچر شامل ڪندا. بهرحال، هي هڪ اختياري ڪم آهي جيئن Laravel اسان کي اهو ڪرڻ جي ضرورت ناهي.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
ھاڻي اسان جي ايپليڪيشن ٽن ٻولين کي سپورٽ ڪري ٿي: انگريزي، اطالوي ۽ فرينچ.
ھاڻي جڏھن اسان سڀني جڳھن کي قائم ڪيو آھي جنھن سان اسان ڪم ڪري رھيا آھيون، اسان اڳتي وڌي سگھون ٿا ۽ اسان جي اڳڀرائي واري پيغام کي ترجمو ڪرڻ لاءِ اڳتي وڌي سگھون ٿا.defiرات.
اچو ته فولڊر ۾ نئين لوڪلائيزيشن فائلون شامل ڪندي شروع ڪريون resources/lang
. پهرين، هڪ فائل ٺاهيو resources/lang/it.json
۽ لاڳاپيل ترجما شامل ڪريو، جيئن ھيٺ ڏنل:
{
"Welcome to our website": "Benvenuto nel nostro sito web"
}
اڳيون، هڪ فائل ٺاهيو resources/lang/fr.json
:
{
"اسان جي ويب سائيٽ تي ڀليڪار": "اسان جي سائيٽ تي ڀليڪار"
}
جئين توهان ڏسي سگهو ٿا، اسان هميشه اڳئين پيغام ڏانهن اشارو ڪندا آهيونdefinite جيڪو اسان فائل ۾ شامل ڪيو welcome.blade.php
(جيڪو هيو {{ __('Welcome to our website') }}
). اهو ئي سبب آهي ته اسان کي فائل ٺاهڻ جي ضرورت ناهي en.json
اهو ئي سبب آهي ته Laravel اڳ ۾ ئي ڄاڻي ٿو ته ڪهڙا پيغام اسان اڳ ۾ سيٽنگ ذريعي گذريا آهنdefiفنڪشن سان ختم __()
اهي اسان جي مقامي اڳوڻن لاء آهنdefinito en.
هن نقطي تي، Laravel کي خبر ناهي ته لوڪل کي ڪيئن تبديل ڪجي، تنهن ڪري هن وقت لاءِ اسان ترجما ڪريون ٿا سڌي رستي جي اندر. اڳواٽ استقبال واري رستي ۾ ترميم ڪريوdefiختم ڪيو ويو جيئن هيٺ ڏيکاريل آهي:
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
اسان ھاڻي پنھنجي ويب سائيٽ جو دورو ڪري سگھون ٿا، ڪنھن به موجود ٻولين کي پھرين واٽ واري حصي طور بيان ڪري: مثال طور، localhost/ru
o localhost/fr
. توھان کي ڏسڻ گھرجي مقامي مواد. ان صورت ۾ جيڪڏهن توهان هڪ غير سپورٽ ٿيل لوڪل بيان ڪيو يا ڪنهن به جڳهه جي وضاحت نه ڪريو، Laravel استعمال ڪندو en
ڊفالٽ ترتيب سانdefiنيتا
هر سائيٽ جي لنڪ لاءِ لوڪل کي تبديل ڪرڻ شايد اهو نه هجي جيڪو توهان چاهيو ٿا، ۽ اهو ٿي سگهي ٿو صاف جمالياتي طور تي نظر نٿو اچي. ان ڪري اسان ٻوليءَ جي سيٽنگ کي خاص ٻولي مٽائيندڙ ذريعي ڪنداسين ۽ ترجمو ڪيل مواد کي ڊسپلي ڪرڻ لاءِ استعمال ڪندڙ سيشن استعمال ڪنداسين. تنهن ڪري، اندر هڪ نئون مڊل ويئر ٺاهيو app/Http/Middleware/Localization.php
فائل يا هلائڻ سان artisan make:middleware Localization
.
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (Session::has('locale')) {
App::setLocale(Session::get('locale'));
}
return $next($request);
}
}
هي مڊل ويئر Laravel کي هدايت ڪندو ته صارف جي چونڊيل لوڪل کي استعمال ڪرڻ لاءِ جيڪڏهن هي چونڊ سيشن ۾ موجود آهي.
جيئن ته اسان کي هر درخواست تي هن آپريشن کي انجام ڏيڻ جي ضرورت آهي، اسان کي ان کي اڳي مڊل ويئر اسٽيڪ ۾ شامل ڪرڻ جي ضرورت آهيdefiاندر داخل ٿيو app/http/Kernel.php
في il web
مڊل ويئر گروپ:
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, /* <--- add this */
],
اڳيون، اسان کي جڳھ کي تبديل ڪرڻ لاء ھڪڙو رستو شامل ڪرڻو پوندو. اسان بندش وارو رستو استعمال ڪري رهيا آهيون، پر توهان استعمال ڪري سگهو ٿا بلڪل ساڳيو ڪوڊ توهان جي ڪنٽرولر اندر جيڪڏهن توهان چاهيو ٿا:
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
انهي سان گڏ، اسان جي اڳڀرائي واري رستي ۾ شامل ڪيل لوڪل ٽگل کي هٽائڻ نه وساريوdefiرات:
Route::get('/', function () {
return view('welcome');
});
هڪ دفعو اهو ٿي چڪو آهي، صارف لاء صرف هڪ طريقو آهي جيڪو هن وقت مقرر ڪيل ٻولي کي تبديل ڪرڻ لاء داخل ٿيڻ سان آهي localhost/language/{locale}
. جي locale
چونڊ کي سيشن ۾ محفوظ ڪيو ويندو ۽ صارفين کي ريڊائريڪٽ ڪندو جتي اهي آيا آهن (چڪ ڪريو Localization
وچولي سامان). ڪوشش ڪرڻ لاءِ، وڃو localhost/language/ru
(جيستائين توهان جي سيشن ڪوڪيز توهان جي برائوزر ۾ موجود آهي) ۽ توهان ترجمو ڪيل مواد ڏسندا. توھان ويب سائيٽ جي چوڌاري آزاديء سان گھمڻ يا صفحي کي ريفريش ڪرڻ جي ڪوشش ڪري سگھو ٿا ۽ ڏسو ته منتخب ٿيل ٻولي محفوظ آھي.
هاڻي اسان کي ڪجهه ٺاهڻ جي ضرورت آهي ته صارف دستي طور تي مقامي ڪوڊ URL ۾ داخل ڪرڻ جي بدران ٻولي تبديل ڪرڻ لاء ڪلڪ ڪري سگهي ٿو. هن کي ڪرڻ لاء، اسان هڪ تمام سادو ٻولي چيڪ ڪندڙ شامل ڪنداسين. تنهن ڪري، هڪ نئون ٺاهيو resources/views/partials/language_switcher.blade.php
ھيٺ ڏنل ڪوڊ سان فائل:
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
<span class="ml-2 mr-2 text-gray-700">{{ $locale_name }}</span>
@else
<a class="ml-1 underline ml-2 mr-2" href="language/{{ $available_locale }}">
<span>{{ $locale_name }}</span>
</a>
@endif
@endforeach
</div>
نئين ٺاهيل سوئچر کي "استقبال" ڏسڻ ۾ شامل ڪريو:
<body class="antialiased">
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
@include('partials/language_switcher')
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
{{ __('Welcome to our website') }}
</div>
</div>
</div>
</body>
کوليو app/Providers/AppServiceProvider.php
فائل ڪريو ۽ شيئر ڪرڻ لاءِ ڪوڊ شامل ڪريو جڏھن اسان جي ٻولي سوئچر ٺاھيو ويندو. خاص طور تي، اسان موجوده لوڪل کي حصيداري ڪنداسين جيڪا فائل جي طور تي رسائي سگهجي ٿي {{ $current_locale }}
.
اسان بنيادي طور تي ڪم ڪنداسين resources/views/welcome.blade.php
، تنهنڪري هر شي اسان جي استقبال واري ڏيک ۾ ٿيڻ گهرجي جيستائين ٻي صورت ۾ بيان نه ڪيو وڃي.
مثال طور، اچو ته اسان جي خيالي استعمال ڪندڙ کي هيلو چئو (Amanda) بجاء صرف هڪ عام پيغام ڏيکاري:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
نوٽ ڪريو ته اسان نالو استعمال ڪيو آھي پھريون اکر ننڍي اکر ۾، پر جڳھ ھولڊر پھريون اکر وڏي اکر سان. اهو طريقو، Laravel توهان جي مدد ڪري سگهي ٿو خودڪار طريقي سان حقيقي لفظ کي سرمائيداري ڪرڻ. اهو تڏهن ٿيندو جڏهن جڳهه هولڊر هڪ وڏي اکر سان شروع ٿئي، مثال طور، :Name
پيدا ڪري ٿو "ڪيرولين" يا هڪ مڪمل سرمائي وارو لفظ، :NAME
، پيدا ڪري ٿو "ڪارولين".
اسان اسان جي ترجمي واري فائلن کي پڻ تازه ڪاري ڪندا آهيون resources/lang/fr.json
e resources/lang/it.json
, جيئن هن وقت اسان صرف انگريزي ورزن کي ڪٿي به ڏسنداسين ڇو ته ترجمي جون ڪيز ترجمي سان نه ملنديون آهن.
فرانسي:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name"
}
اطالوي:
{
"Welcome to our website, :Name": "Benvenuto sul nostro sito web, :Name"
}
عمل ۾ جمع کي ڏسڻ لاء، اچو ته متن جو نئون پيراگراف شامل ڪريو.
جمع ڪرڻ لاء، توهان کي فنڪشن استعمال ڪرڻ گهرجي trans_choice
جي بدران __()
، مثال طور:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
<br>
{{ trans_choice('There is one apple|There are many apples', 2) }}
جئين توهان ڏسي سگهو ٿا، جمع فارمن کي جدا ڪيو ويو آهي a |
.
ھاڻي، جيڪڏھن اسان کي گھڻن جمعن جي ضرورت آھي؟
اهو پڻ ممڪن آهي:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24) }}
انهي حالت ۾، اسان نمبرن جي اجازت ڏين ٿا 0
, 1
، ۽ کان 2
a 19
، ۽ آخرڪار 20 کان پوءِ. يقينن، توھان شامل ڪري سگھو ٿا گھڻا ضابطا توھان کي ضرورت آھي.
پوء ڇا اسان چاهيون ٿا جڳهه هولڊرز اسان جي جمع فارمن ۾؟
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24, ['form' => 'is']) }}
اسان پڻ استعمال ڪري سگھون ٿا ڳڻپ پاس ٿيل `trans_choice` ۾ جيڪڏهن گهربل هجي ته جڳهه هولڊر استعمال ڪندي :count
خاص:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
آخر ۾، پنھنجي ترجمي جي فائلن کي اپڊيٽ ڪرڻ نه وساريو جيڪي توھان بنيادي ترجمي ۾ ڪيون آھن.
اطالوي:
{
"Welcome to our website, :Name": "Benvenuto nel nostro sito, :Name",
"{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples": "{0} Nessuna mela|{1} C'è:count mela|[2,19] Ci sono :count mele"
}
فرانسي:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name",
"{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples": "{0} Il n'y a pas de pommes|{1} Il n'y :form :count pomme|[2,19] Il y :form :count pommes"
}
تاريخن کي ڳولڻ لاء، اسان جي طاقت کي استعمال ڪنداسين ڪاربن ، جيڪو ڊفالٽ سان Laravel سان اچي ٿوdefiنيتا چيڪ ڪريو ته ڪاربان دستاويز ؛ توهان تمام گهڻيون دلچسپ شيون ڪري سگهو ٿا. مثال طور، اسان پنھنجي جڳھ کي تاريخ ۽ وقت جي ضابطن سان سيٽ ڪري سگھون ٿا.
اسان جي سادي مثال لاءِ، اسين ڏيکارينداسين موجوده تاريخ کي مقامي چونڊيل ٻولي لاءِ. اسان ۾ routes/web.php
، اسان ڀليڪار صفحي جي رستي کي اپڊيٽ ڪيو ۽ مقامي تاريخ جو پيغام اسان ڏانهن موڪليو view
ڀلي ڪري آيا:
<?php
Route::get('/', function () {
$today = \Carbon\Carbon::now()
->settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
اچو ته تازه ڪاري ڪريون resources/views/welcome.blade.php
شامل ڪرڻ جي تاريخ ڊسپلي، جيئن ته:
{{ __('Welcome to our website, :Name', ['name' => 'amanda']) }}
<br>
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
<br>
{{ $date_message }}
جي هوم پيج تي ٻولي تبديل ڪرڻ جي ڪوشش localhost
، اسان ڏسنداسين ته تاريخون هاڻي مقامي آهن، مثال طور:
مختلف ملڪن ۾، ماڻهو انگن جي نمائندگي ڪرڻ لاءِ مختلف فارميٽ استعمال ڪندا آهن، مثال طور:
تنهن ڪري، توهان جي Laravel ايپ ۾ انهن اختلافن کي ظاهر ڪرڻ لاء، توهان استعمال ڪري سگهو ٿا نمبر فارميٽر هيٺين طريقي سان:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);
$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
توھان ھڪڙي خاص ٻوليءَ ۾ نمبر پڻ لکي سگھو ٿا ۽ ڪجھھ ڏيکاري سگھو ٿا جھڙوڪ ”ھڪ لک ٽيويھ ھزار ھڪ سو ٽيويھ پوائنٽ ھڪڙو ٻه“:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);
$num2 = NumberFormatter::create('fr', NumberFormatter::SPELLOUT);
ان کان علاوه، NumberFormatter توهان کي آساني سان ڪرنسي ڳولڻ جي اجازت ڏئي ٿو، مثال طور:
<?php
$currency1 = NumberFormatter::create('fr', NumberFormatter::CURRENCY);
$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
تنهنڪري لاء fr
توهان يورو ڏسندا، جڏهن ته en_US
ڪرنسي آمريڪي ڊالر ۾ ٿيندي.
Ercole Palmeri
رنگ سازي ذريعي سٺي موٽر صلاحيتن کي ترقي ڪرڻ ٻارن کي وڌيڪ پيچيده صلاحيتن لاء تيار ڪري ٿو جهڙوڪ لکڻ. رنگ ڏيڻ…
بحري شعبي هڪ حقيقي عالمي معاشي طاقت آهي، جيڪا 150 بلين مارڪيٽ جي طرف نيويگيٽ ڪئي آهي ...
گذريل سومر، فنانشل ٽائمز OpenAI سان هڪ ڊيل جو اعلان ڪيو. ايف ٽي پنهنجي عالمي سطح جي صحافت کي لائسنس ڏئي ٿو ...
لکين ماڻهو ادا ڪن ٿا اسٽريمنگ سروسز لاءِ، ادا ڪندا مھينا سبسڪرپشن فيس. اها عام راءِ آهي ته توهان…