لاراویل یو غوښتنلیک دی چې د ځایی کیدو لپاره ډیزاین شوی ، ترڅو مختلف ژبو او کلتورونو سره تطابق وکړي. ځایی کول د ژباړې له لارې یوې ځانګړې ژبې ته نړیوال شوي غوښتنلیکونه تنظیموي.
localhost
. که نه، بدل کړئ localhost
ستاسو د خپل ډومین نوم یا IP پتې سره (ستاسو د نصب کولو پورې اړه لري).په لارویل کې، لکه د ډیری نورو چوکاټونو په څیر، موږ کولی شو د مختلفو ژبو ژباړې په جلا فایلونو کې ذخیره کړو. د Laravel ژباړې فایلونو تنظیم کولو لپاره دوه لارې شتون لري:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;د هغو ژبو لپاره چې د سیمې له مخې توپیر لري، تاسو باید نومونه ورکړئ directory/file
د ISO 15897 مطابق ژبه. د مثال په توګه، د انګلستان انګلیسي لپاره تاسو به کاروئ 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>
موږ به د خپل ځایی کولو د ښه راغلاست پیغام چمتو کولو سره پیل وکړو، کوم چې په لارویل کې واقعیا اسانه دی. ټول هغه څه چې تاسو یې باید وکړئ د لاندې کوډ سره "زموږ ویب پا toې ته ښه راغلاست" متن بدل کړئ: {{ __('Welcome to our website') }}
. دا به لاراول ته لارښوونه وکړي چې "زموږ ویب پا toې ته ښه راغلاست" په ډیفالټ ډول ښکاره کړيdefinite او د دې تار د ژباړې لپاره وګورئ که چیرې د انګلیسي پرته بله ژبه جوړه شوې وي (موږ به وروسته ورته ورسیږو). انګلیسي به د ډیفالټ ژبې په توګه وټاکل شيdefiزموږ د اپلیکیشن nish، نو د ډیفالټ ترتیب سرهdefiپه پای کې به موږ په ساده ډول "زموږ ویب پاڼې ته ښه راغلاست" متن ښکاره کړو. که چیرې ځای توپیر ولري، موږ به هڅه وکړو چې د سمون ژباړې ومومئ او دا به په یوه شیبه کې رامینځته شي.
مګر لارویل څنګه پوهیږي چې اوسنۍ ژبه کومه ده یا کومې ژبې په غوښتنلیک کې شتون لري؟ دا په اپلیکیشن کې د ځایی تشکیلاتو په کتلو سره دا کار کوي 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ستاسو د غوښتنلیک nish (لږترلږه، که کوم بل ځای په کوډ کې نه وي ټاکل شوی). او د fallback_locale
دا په هغه صورت کې فعال کیږي چې موږ په خپل غوښتنلیک کې غیر موجود ځای ټاکلو.
پداسې حال کې چې موږ دا فایل خلاص کړی، راځئ چې زموږ د اسانتیا لپاره یو نوی کیلي اضافه کړو چې ټول هغه ځایونه لیست کړئ چې زموږ غوښتنلیک به یې ملاتړ وکړي. موږ به دا وروسته وکاروو کله چې ځایی سویچر اضافه کړو. په هرصورت، دا یو اختیاري دنده ده ځکه چې لارویل موږ ته اړتیا نلري چې دا ترسره کړو.
/*
|--------------------------------------------------------------------------
| 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
:
{
"زموږ ویب پاڼې ته ښه راغلاست": "زموږ سایټ ته ښه راغلاست"
}
لکه څنګه چې تاسو لیدلی شئ، موږ تل مخکې پیغام ته مراجعه کووdefinito چې موږ په فایل کې اضافه کړی welcome.blade.php
(کوم چې وه {{ __('Welcome to our website') }}
). دلیل چې ولې موږ اړتیا نلرو فایل جوړ کړو en.json
دا ځکه چې لارویل لا دمخه پوهیږي چې کوم پیغامونه موږ د مخکینۍ ترتیب سره تیر کووdefiپه فعالیت پای ته ورسید __()
دوی زموږ د ځایی پری لپاره ديdefinito en.
په دې وخت کې، لارویل نه پوهیږي چې څنګه ځایونه بدل کړي، نو د اوس لپاره، راځئ چې په مستقیم ډول د لارې دننه ژباړې وکړو. مخکې د ښه راغلاست لاره بدله کړئ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
. تاسو باید محلي محتوا وګورئ. په هغه صورت کې چې تاسو یو غیر ملاتړ شوی ځای مشخص کړئ یا هیڅ ځای مشخص نه کړئ، لاراول به کاروي 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);
}
}
دا میډیل ویئر به لاراول ته لارښوونه وکړي چې د کارونکي ټاکل شوي ځای څخه کار واخلي که چیرې دا انتخاب په ناسته کې شتون ولري.
څرنګه چې موږ اړتیا لرو چې دا په هره غوښتنه ترسره شي، موږ باید دا د پری میډیل ویئر سټیک کې اضافه کړوdefiکې پای ته ورسید app/http/Kernel.php
per 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
، نو هرڅه باید زموږ د ښه راغلاست لید کې پیښ شي پرته لدې چې بل ډول مشخص شي.
د مثال په توګه ، راځئ چې یوازې د عمومي پیغام ښودلو پرځای زموږ خیالي کارونکي (امنډا) ته سلام ووایو:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
په یاد ولرئ چې موږ نوم د لومړي توري سره په کوچنیو حروف کې کارولی، مګر ځای لرونکی د لومړي توري سره په لوی لاس کې. په دې توګه، لارویل کولی شي تاسو سره مرسته وکړي په اتوماتيک ډول د اصلي کلمې پانګونه وکړي. دا به واقع شي که چیرې ځای لرونکی د لوی توری سره پیل شي، د بیلګې په توګه، :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) }}
لکه څنګه چې تاسو لیدلی شئ، جمع ډولونه د الف لخوا جلا شوي |
.
اوس، که موږ څو جمع فورمونو ته اړتیا ولرو؟
دا هم ممکنه ده:
{{ 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
، موږ به وګورو چې نیټې اوس ځایی شوي ، د مثال په توګه:
په مختلفو هیوادونو کې، خلک د شمیرو استازیتوب کولو لپاره مختلف شکلونه کاروي، د بیلګې په توګه:
له همدې امله ، ستاسو په لارویل ایپ کې د دې توپیرونو منعکس کولو لپاره ، تاسو کولی شئ وکاروئ د شمیرې بڼه په لاندې ډول:
<?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
ګوګل ډیپ مائنډ د خپل مصنوعي استخباراتو ماډل یوه پرمختللې نسخه معرفي کوي. نوی پرمختللي ماډل نه یوازې چمتو کوي ...
لارویل، د خپل ښکلي نحو او ځواکمنو ځانګړتیاو لپاره مشهور، د ماډلر معمارۍ لپاره یو پیاوړی بنسټ هم چمتو کوي. هلته…
سیسکو او سپلنک د پیرودونکو سره مرسته کوي چې د راتلونکي امنیت عملیاتو مرکز (SOC) ته خپل سفر ګړندي کړي ...
Ransomware د تیرو دوه کلونو راهیسې په خبرونو تسلط لري. ډیری خلک ښه پوهیږي چې بریدونه ...
د ایپل ویژن پرو سوداګریز لیدونکي په کارولو سره د سترګو د سترګو عملیات په کاتانیا پولی کلینیک کې ترسره شوي ...
د رنګ کولو له لارې د موټرو ښه مهارتونو رامینځته کول ماشومان د نورو پیچلو مهارتونو لکه لیکلو لپاره چمتو کوي. رنګولو…
سمندري سکتور یو ریښتینی نړیوال اقتصادي ځواک دی ، کوم چې د 150 ملیارد بازار په لور حرکت کړی ...
تیره دوشنبه، فایننشل ټایمز د OpenAI سره یوه معامله اعلان کړه. FT د نړۍ په کچه ژورنالیزم جواز ورکوي ...