ILaravel sisicelo esenzelwe ukuba sesasekhaya, ukuziqhelanisa neelwimi ezahlukeneyo kunye neenkcubeko. Ukwenziwa kwalapha ekhaya kulungelelanisa usetyenziso lwamazwe ngamazwe kulwimi oluthile ngoguqulo.
localhost
. Ukuba akunjalo, buyisela localhost
ngegama lakho lesizinda okanye idilesi yeIP (kuxhomekeke kufakelo lwakho).ELaravel, njengakwezinye iinkqubo ezininzi, sinokugcina iinguqulelo zeelwimi ezahlukeneyo kwiifayile ezahlukeneyo. Kukho iindlela ezimbini zokucwangcisa iifayile zokuguqulela iLaravel:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;Kwiilwimi ezahlukileyo ngokwemimandla, kufuneka unike igama le directory/file
yolwimi ngokwe-ISO 15897. Umzekelo, kwisiNgesi saseBritane ungasisebenzisa en_GB
ngaphandle kwe en-gb
. Kweli nqaku, siza kugxila kwindlela yesibini, kodwa okufanayo kuya kweyokuqala (ngaphandle kokuba izitshixo zokuguqulela zibizwa kwaye zibuyiswe njani).
Ngoku, masiye ku resources/views/welcome.blade.php
ifayile kwaye ubuyisele imixholo ye body
ithegi neyethu, ngolu hlobo:
<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>
Siza kuqala ngokulungiselela umyalezo wethu owamkelekileyo wokwenziwa kwalapha ekhaya, ekulula kakhulu eLaravel. Ekuphela kwento ekufuneka uyenzile kukutshintsha isicatshulwa esithi “Wamkelekile kwiwebhusayithi yethu” ngale khowudi ilandelayo: {{ __('Welcome to our website') }}
. Oku kuya kuyalela uLaravel ukuba abonise "Wamkelekile kwiwebhusayithi yethu" ngokuzenzekelayodefiNita kwaye ujonge iinguqulelo zalo mtya ukuba ulwimi olungelulo isiNgesi lusetiwe (siya kufika kuloo nto kamva). IsiNgesi siza kumiselwa njengolwimi olungagqibekangadefiimini yosetyenziso lwethu, ngoko ngokungagqibekangadefiNita siza kubonisa nje isicatshulwa "Wamkelekile kwiwebhusayithi yethu". Ukuba ingingqi yahlukile, siya kuzama ukukhangela inguqulelo ehambelanayo eya kwenziwa ngephanyazo.
Kodwa uLaravel wazi njani ukuba loluphi ulwimi lwangoku okanye zeziphi iilwimi ezikhoyo kwisicelo? Ikwenza oku ngokujonga kuqwalaselo lwendawo kwi-app config/app.php
. Vula le fayile kwaye ujonge ezi zitshixo zimbini zokudibanisa:
/*
|--------------------------------------------------------------------------
| 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',
Iinkcazo eziboniswe ngasentla kwezitshixo kufuneka zizichaze, kodwa ngokufutshane, isitshixo locale
iqulethe igumbi langaphambilidefiisicelo sakho (ubuncinci, ukuba akukho ndawo yimbi isetiwe kwikhowudi). Kwaye i fallback_locale
iyasebenza ukuba sibeka igumbi elingekhoyo kwisicelo sethu.
Ngelixa sinayo le fayile evuliweyo, songeze isitshixo esitsha ukwenzela ukuba kube lula ukudwelisa zonke iindawo eziya kuxhaswa sisicelo sethu. Siza kusebenzisa oku kamva xa songeza isitshintshi sasekhaya. Nangona kunjalo, lo ngumsebenzi ozikhethelayo njengoko uLaravel engafuni ukuba siwenze.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
Ngoku isicelo sethu sixhasa iilwimi ezintathu: IsiNgesi, isiTaliyane nesiFrentshi.
Ngoku sele simisele zonke iindawo esiza kusebenzisana nazo, singaqhubela phambili siguqulele umyalezo wethu owamkelekileyo ngaphambili.defingokuhlwa.
Masiqale ngokongeza iifayile zalapha ekhaya kwifolda resources/lang
. Okokuqala, yenza ifayile resources/lang/it.json
kwaye wongeze iinguqulelo ezihambelanayo, ngolu hlobo lulandelayo:
{
"Welcome to our website": "Benvenuto nel nostro sito web"
}
Emva koko, yenza ifayile resources/lang/fr.json
:
{
“Wamkelekile kwiwebhusayithi yethu”: “Wamkelekile kwindawo yethu”
}
Njengoko ubona, sihlala sibhekisa kumyalezo wangaphambilidefinite ukuba songeze kwifayile welcome.blade.php
(eyayiyiyo {{ __('Welcome to our website') }}
). Isizathu sokuba kunganyanzelekanga ukuba senze i en.json
Kungenxa yokuba uLaravel sele esazi ukuba yeyiphi imiyalezo esiyidlulayo ngokuseta kwangaphambilidefiugqibile ngomsebenzi __()
zezangaphambili zethu zasekhayadefiuthi en.
Okwangoku, uLaravel akayazi indlela yokutshintsha ingingqi, ke okwangoku senza iinguqulelo ngqo ngaphakathi kwendlela. Hlela indlela yokwamkela kwangaphambilidefiigqitywe njengoko kubonisiwe ngezantsi:
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
Ngoku sinokundwendwela iwebhusayithi yethu, sichaza naziphi na iilwimi ezikhoyo njengecandelo lendlela yokuqala: umzekelo, localhost/ru
o localhost/fr
. Kufuneka ubone umxholo wendawo. Kwimeko apho ukhankanya indawo engaxhaswanga okanye ungakhankanyi indawo kwaphela, iLaravel izakusebenzisa en
ngolungiselelo olungagqibekangadefinita.
Ukutshintsha indawo yekhonkco lesayithi nganye isenokungabi yilento uyifunayo kwaye isenokungabonakali icocekile ngobuhle. Yiyo loo nto siya kwenza useto lolwimi ngokutshintsha ulwimi olukhethekileyo kwaye sisebenzise iseshoni yomsebenzisi ukubonisa umxholo oguquliweyo. Ke ngoko, yenza i-middleware entsha ngaphakathi kwe app/Http/Middleware/Localization.php
ifayile okanye ukuqhuba 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);
}
}
Le middleware iya kuyalela uLaravel ukuba asebenzise i locale ekhethwe ngumsebenzisi ukuba olu khetho lukhona kwiseshoni.
Kuba sifuna ukuba lo msebenzi wenziwe kwisicelo ngasinye, kufuneka siwufake kwakhona kwisitaki se-pre middlewaredefiungene app/http/Kernel.php
nge-il web
Iqela le-middleware:
* 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 */
],
Emva koko, kufuneka songeze umendo wokutshintsha indawo. Sisebenzisa indlela yokuvala, kodwa ungasebenzisa ikhowudi efanayo ngqo ngaphakathi kwisilawuli sakho ukuba uyafuna:
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Kwakhona, ungalibali ukususa inguqulelo yendawo eyongezwe ngaphambili kwindlela yethu yokwamkela kwangaphambilidefiNONE
Route::get('/', function () {
return view('welcome');
});
Nje ukuba kwenziwe oku, ekuphela kwendlela yokuba umsebenzisi atshintshe ulwimi olusetiweyo ngoku kukungena localhost/language/{locale}
. Inkqubo ye- locale
ukhetho luya kugcinwa ngaphakathi kweseshoni kwaye luzakwalathisa abasebenzisi emva apho bebesuka khona (jonga i Localization
izixhobo eziphakathi). Ukuyizama, yiya ku localhost/language/ru
(ukuba i-cookie yeseshoni yakho ikhona kwi-browser yakho) kwaye uya kubona umxholo oguqulelweyo. Ungajikeleza ngokukhululekileyo kwiwebhusayithi okanye uzame ukuhlaziya iphepha kwaye ubone ukuba ulwimi olukhethiweyo lugciniwe.
Ngoku kufuneka senze into umsebenzisi anokuyicofa ukuze atshintshe ulwimi endaweni yokufaka ngesandla iikhowudi zendawo kwi-URL. Ukwenza oku, siya kongeza ukukhangela ulwimi olulula kakhulu. Ke ngoko, yenza entsha resources/views/partials/language_switcher.blade.php
ifayile enekhowudi elandelayo:
<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>
Bandakanya iswitshi esandula ukuyilwa kumbono “wamkelekile”:
<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>
Vula i app/Providers/AppServiceProvider.php
ifayile kwaye wongeze ikhowudi yokwabelana xa isitshintshi solwimi siqulunqwa. Ngokukodwa, siya kwabelana ngoseto lwangoku lwendawo enokufikelelwa njengefayile {{ $current_locale }}
.
Siza kusebenza kuqala kunye resources/views/welcome.blade.php
, ngoko yonke into kufuneka yenzeke kumbono wethu owamkelekileyo ngaphandle kokuba kuchazwe ngenye indlela.
Umzekelo, masithi molo kumsebenzisi wethu ocingelwayo (uAmanda) endaweni yokubonisa umyalezo owenziwe ngabenzi:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
Nceda uqaphele ukuba sisebenzise igama elinonobumba omncinci wokuqala, kodwa isibambi-ndawo esinonobumba omkhulu wokuqala. Ngale ndlela, iLaravel inokukunceda ukuba wenze i-capital ngokuzenzekelayo igama lokwenyani. Oku kuyakwenzeka ukuba isibambi-ndawo siqala ngonobumba omkhulu, umzekelo, :Name
uvelisa “uCaroline” okanye igama elinoonobumba abakhulu ngokupheleleyo, :NAME
, ivelisa "i-CAROLINE".
Sikwahlaziya iifayile zethu zoguqulo resources/lang/fr.json
e resources/lang/it.json
, njengokuba okwangoku siza kubona kuphela inguqulelo yesiNgesi kuyo yonke indawo ekubeni izitshixo zokuguqulela zingahambelani neenguqulelo.
IsiFrentshi:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name"
}
IsiTaliyani:
{
"Welcome to our website, :Name": "Benvenuto sul nostro sito web, :Name"
}
Ukubona ukwenziwa kwesininzi kwisenzo, masifake umhlathi omtsha wombhalo.
Ukwenza isininzi, kufuneka usebenzise umsebenzi trans_choice
ngaphandle kwe __()
, umzekelo:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
<br>
{{ trans_choice('There is one apple|There are many apples', 2) }}
Njengoko ubona, iifom zesininzi zahlulwe ngo-a |
.
Ngoku, kuthekani ukuba sifuna iifom ezininzi zesininzi?
Oku kunokwenzeka kwakhona:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24) }}
Kule meko, sivumela amanani 0
, 1
, ewe 2
a 19
, kwaye ekugqibeleni ukusuka kwi-20 ukuya phambili. Ngokuqinisekileyo, unokongeza imithetho emininzi njengoko ufuna.
Ke, kuthekani ukuba sifuna izibambi-ndawo kwiifomu zethu zesininzi?
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24, ['form' => 'is']) }}
Sinokusebenzisa ubalo olupasiswe `trans_choice` ukuba kuyimfuneko ngokusebenzisa isibambi-ndawo :count
eyodwa:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
Okokugqibela, ungalibali ukuhlaziya iifayile zakho zokuguqulela ngalo naluphi na utshintsho olwenzileyo kwisiseko soguqulelo.
IsiTaliyani:
{
"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"
}
IsiFrentshi:
{
"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"
}
Ukufumana imihla, siya kusebenzisa amandla e ICarbon , eza neLaravel ngokungagqibekangadefinita. Jonga i Amaxwebhu ekhabhoni ; unokwenza izinto ezininzi ezintle. Umzekelo, sinokuseta indawo yethu kunye nemithetho yomhla kunye nexesha.
Kumzekelo wethu olula, siza kubonisa umhla wangoku wokwalapha kulwimi olukhethiweyo. Kwethu routes/web.php
, sihlaziya indlela yephepha lolwamkelo kwaye sidlulise umyalezo womhla wasekhaya kwezethu view
Wamkelekile:
<?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
]);
});
Masihlaziye resources/views/welcome.blade.php
Ukongeza umboniso womhla, ngolu hlobo:
{{ __('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 }}
Ukuzama ukutshintsha ulwimi kwiphepha lasekhaya le localhost
, siza kubona ukuba imihla ngoku yenziwe yasekhaya, umzekelo:
Kumazwe ahlukeneyo, abantu basebenzisa iifomati ezahlukeneyo ukumela amanani, umzekelo:
Ke ngoko, ukubonakalisa lo mahluko kusetyenziso lwakho lweLaravel, ungasebenzisa InomboloFormatter ngale ndlela ilandelayo:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);
$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
Ungaphinda ubhale inani ngolwimi oluthile kwaye ubone into efana "nekhulu elinamashumi amabini anesithathu lamawaka, ikhulu elinamanci mabini anesithathu inqaku elinye":
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);
$num2 = NumberFormatter::create('fr', NumberFormatter::SPELLOUT);
Ngapha koko, iNumberFormatter ikuvumela ukuba ufumane imali ngokulula, umzekelo:
<?php
$currency1 = NumberFormatter::create('fr', NumberFormatter::CURRENCY);
$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
Ngoko ke fr
uya kubona i-Euro, ngelixa en_US
imali iya kuba ngeedola zaseMelika.
Ercole Palmeri
Ukuphuhlisa izakhono zemoto ngokufaka imibala kulungiselela abantwana izakhono ezinzima ezifana nokubhala. Ukufaka umbala...
Icandelo lomkhosi wasemanzini ligunya lokwenyani loqoqosho lwehlabathi, elithe lajonga kwimarike ye-150 yeebhiliyoni...
NgoMvulo ophelileyo, i-Financial Times ibhengeze isivumelwano kunye ne-OpenAI. I-FT ikhupha iilayisensi kubuntatheli bayo obukumgangatho wehlabathi…
Izigidi zabantu zihlawula iinkonzo zokusasaza, zihlawula umrhumo wenyanga. Luluvo oluqhelekileyo ukuba…