I-Laravel uhlelo lokusebenza olwenzelwe ukuba lwendawo, ukuzivumelanisa nezilimi namasiko ahlukahlukene. Ukwenza kwasendaweni kuhlanganisa izinhlelo zokusebenza zamazwe ngamazwe ziye olimini oluthile ngokuhumusha.
localhost
. Uma kungenjalo, buyisela localhost
ngegama lakho lesizinda noma ikheli le-IP (kuya ngokufaka kwakho).E-Laravel, njengakwezinye izinhlaka eziningi, singagcina ukuhumusha kwezilimi ezahlukene ngamafayela ahlukene. Kunezindlela ezimbili zokuhlela amafayela okuhumusha e-Laravel:
resources/lang/{en,fr,ru}/{myfile.php}
;resources/lang/{fr.json, ru.json}
;Ngezilimi ezihluka ngendawo, kufanele uziqambe directory/file
yolimi ngokwe-ISO 15897. Isibonelo, ngesiNgisi sase-UK ongasisebenzisa en_GB
esikhundleni se en-gb
. Kulesi sihloko, sizogxila endleleni yesibili, kodwa okufanayo kuya kweyokuqala (ngaphandle kokuthi okhiye bokuhumusha baqanjwa futhi babuyiselwe kanjani).
Manje, ake siye ku- resources/views/welcome.blade.php
ifayela bese ubuyisela okuqukethwe kwe body
umaka neyethu, kanje:
<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>
Sizoqala ngokulungiselela umlayezo wethu wokwamukela wokwenziwa kwasendaweni, okulula ngempela e-Laravel. Okufanele ukwenze ukufaka esikhundleni sombhalo othi “Siyakwamukela kuwebhusayithi yethu” ufake ikhodi elandelayo: {{ __('Welcome to our website') }}
. Lokhu kuzoyala uLaravel ukuthi abonise okuthi “Siyakwamukela kuwebhusayithi yethu” ngokuzenzakalelayodefiNite futhi ubheke ukuhunyushwa kwalolu chungechunge uma ulimi olungesona isiNgisi lusethiwe (sizofika kulokho ngokuhamba kwesikhathi). IsiNgisi sizosethwa njengolimi olumisiwedefinish yohlelo lwethu lokusebenza, ngakho ngokusetha okuzenzakalelayodefiEkugcineni sizovele siveze umbhalo othi “Siyakwamukela kuwebhusayithi yethu”. Uma indawo ihlukile, sizozama ukuthola ukuhumusha okufanayo futhi kuzodalwa ngokushesha.
Kepha uLaravel wazi kanjani ukuthi yiluphi ulimi lwamanje noma yiziphi izilimi ezitholakala kuhlelo lokusebenza? Ikwenza lokhu ngokubheka ukucushwa kwendawo kuhlelo lokusebenza config/app.php
. Vula leli fayela bese ubheka laba okhiye ababili be-associative array:
/*
|--------------------------------------------------------------------------
| 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',
Izincazelo eziboniswe ngenhla kwezikhiye kufanele zizichaze ngokwazo, kodwa ngamafuphi, zibe ukhiye locale
iqukethe predefiisikhathi sohlelo lwakho lokusebenza (okungenani, uma kungekho esinye isifunda esisethiwe kukhodi). Futhi i fallback_locale
iyasebenza uma simisa indawo engekho kuhlelo lwethu lokusebenza.
Nakuba leli fayela lisavuliwe, ake sengeze ukhiye omusha ukuze kube lula kithi ukufaka kuhlu zonke izifunda ezizosekelwa uhlelo lwethu. Sizosebenzisa lokhu kamuva lapho sengeza isishintshi sendawo. Nokho, lona umsebenzi ozikhethela wona njengoba iLaravel ingadingi ukuthi siwenze.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
Manje uhlelo lwethu lusekela izilimi ezintathu: isiNgisi, isiNtaliyane nesiFulentshi.
Manje njengoba sesisungule zonke izifunda esizosebenza nazo, singaqhubeka futhi siqhubekele phambili ekuhumusheni umlayezo wethu wokwamukela kusengaphambili.defikusihlwa.
Ake siqale ngokwengeza amafayela amasha okwenziwa kwasendaweni kufolda resources/lang
. Okokuqala, dala ifayela resources/lang/it.json
bese wengeza izinguqulo ezihambisanayo, kanje:
{
"Welcome to our website": "Benvenuto nel nostro sito web"
}
Okulandelayo, dala ifayela resources/lang/fr.json
:
{
“Siyakwamukela kuwebhusayithi yethu”: “Siyakwamukela esizeni sethu”
}
Njengoba ubona, sibhekisela njalo kumlayezo wangaphambilidefinito esiyengeze kufayela welcome.blade.php
(okwakukhona {{ __('Welcome to our website') }}
). Isizathu sokuthi kungani kungadingeki ukuthi sakhe ifayela en.json
kungenxa yokuthi uLaravel useyazi kakade ukuthi yimiphi imilayezo esiyidlulayo ngokusethwa kwangaphambilidefikuqedwe emcimbini __()
zingezangaphambi kwethudefinithi en.
Kuleli qophelo, uLaravel akazi ukuthi azishintsha kanjani izindawo, ngakho-ke okwamanje, masenze ukuhumusha ngqo ngaphakathi kwendlela. Lungisa indlela yokwamukela kusengaphambilidefikuboniswe ngezansi:
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
Manje sesingakwazi ukuvakashela iwebhusayithi yethu, sicacisa noma yiziphi izilimi ezitholakalayo njengengxenye yendlela yokuqala: isibonelo, localhost/ru
o localhost/fr
. Kufanele ubone okuqukethwe okwenziwe okwasendaweni. Uma kwenzeka ucacisa indawo engasekelwe noma ungacacisi nhlobo indawo, i-Laravel izosebenzisa en
ngephuthadefinita.
Ukushintsha indawo yesixhumanisi sesayithi ngayinye kungase kungabi yilokho okufunayo, futhi kungase kungabonakali kuhlanzekile ngobuhle. Kungakho sizokwenza ukulungiselelwa kolimi sisebenzisa isishintshi solimi esikhethekile futhi sisebenzise isikhathi somsebenzisi ukuze sibonise okuqukethwe okuhunyushiwe. Ngakho-ke, dala i-middleware entsha ngaphakathi kwe app/Http/Middleware/Localization.php
ifayela noma ngokuqalisa 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 izoyalela i-Laravel ukuthi isebenzise indawo ekhethiwe yomsebenzisi uma lokhu kukhetha kukhona kuseshini.
Njengoba sidinga ukuthi lokhu kwenziwe kuso sonke isicelo, sidinga futhi ukusengeza kusitaki sangaphambili se-middlewaredefiuqedele ukungena app/http/Kernel.php
nge-il web
Iqembu 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 */
],
Okulandelayo, sidinga ukungeza indlela ukuze sishintshe indawo. Sisebenzisa indlela yokuvala, kodwa ungasebenzisa ikhodi efanayo ncamashi ngaphakathi kwesilawuli sakho uma uthanda:
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Futhi, ungakhohlwa ukususa ukuguqulwa kwendawo okwengezwe ngaphambilini endleleni yethu yokwamukela kusengaphambilidefiusuku:
Route::get('/', function () {
return view('welcome');
});
Uma lokhu sekwenziwe, okuwukuphela kwendlela yokuthi umsebenzisi aguqule ulimi olusethiwe manje ngokufaka localhost/language/{locale}
. I- locale
Ukukhetha kuzogcinwa ngaphakathi kweseshini futhi kuzoqondisa kabusha abasebenzisi lapho bevela khona (hlola i- Localization
i-middleware). Ukuyizama, yiya ku localhost/language/ru
(inqobo nje uma ikhukhi lakho leseshini likhona esipheqululini sakho) futhi uzobona okuqukethwe okuhunyushiwe. Ungazulazula kuwebhusayithi ngokukhululekile noma uzame ukuvuselela ikhasi futhi ubone ukuthi ulimi olukhethiwe luyalondolozwa.
Manje sidinga ukudala okuthile umsebenzisi angachofoza ukuze aguqule ulimi esikhundleni sokuzifaka mathupha amakhodi endawo ku-URL. Ukwenza lokhu, sizofaka isihloli solimi esilula kakhulu. Ngakho-ke, dala entsha resources/views/partials/language_switcher.blade.php
ifayela elinekhodi 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>
Faka isishintshi esisanda kwakhiwa ekubukeni kokuthi "ukwamukela":
<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
ifayela bese wengeza ikhodi ukuze wabelane lapho isishintshi sethu solimi sizobhalwa. Ngokukhethekile, sizokwabelana ngendawo yamanje engafinyelelwa njengefayela {{ $current_locale }}
.
Sizosebenza kakhulu resources/views/welcome.blade.php
, ngakho yonke into kufanele yenzeke ekubukeni kwethu kokwamukela ngaphandle kwalapho kucaciswe ngenye indlela.
Isibonelo, ake sithi sawubona kumsebenzisi wethu oqanjiwe (u-Amanda) esikhundleni sokuvele sibonise umlayezo ojwayelekile:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
Qaphela ukuthi sisebenzise igama elinohlamvu lokuqala ngofeleba abancane, kodwa isimeli esinohlamvu lokuqala ngosonhlamvukazi. Ngale ndlela, i-Laravel ingakusiza ukuthi ubhale ngosonhlamvukazi ngokuzenzakalelayo igama langempela. Lokhu kuzokwenzeka uma isimeli siqala ngohlamvu olukhulu, isibonelo, :Name
ikhiqiza “uCaroline” noma igama elinosonhlamvukazi ngokugcwele, :NAME
, ikhiqiza "CAROLINE".
Siphinde sibuyekeze amafayela ethu okuhumusha resources/lang/fr.json
e resources/lang/it.json
, njengamanje sizobona kuphela inguqulo yesiNgisi noma yikuphi njengoba okhiye bokuhumusha bengafani nezinguqulo.
Isi-French:
{
"Welcome to our website, :Name": "Bienvenue sur notre site, :Name"
}
IsiNtaliyane:
{
"Welcome to our website, :Name": "Benvenuto sul nostro sito web, :Name"
}
Ukubona ukusebenza kobuningi, ake sengeze isigaba esisha sombhalo.
Ukuze wenze ubuningi, kufanele usebenzise umsebenzi trans_choice
esikhundleni se __()
, Ngokwesibonelo:
{{ __('Welcome to our website, :Name', ['name' => 'caroline']) }}
<br>
{{ trans_choice('There is one apple|There are many apples', 2) }}
Njengoba ubona, amafomu obuningi ahlukaniswa ngu-a |
.
Manje, kuthiwani uma sidinga izinhlobo eziningi zobuningi?
Lokhu kungenzeka futhi:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24) }}
Kulokhu, sivumela izinombolo 0
, 1
, futhi kusuka 2
a 19
, futhi ekugcineni kusukela ku-20 kuye phambili. Kunjalo, ungakwazi ukwengeza imithetho eminingi njengoba udinga.
Pho-ke kuthiwani uma sifuna izibambi-ndawo ebuningini bethu?
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 24, ['form' => 'is']) }}
Futhi singasebenzisa isibalo esiphasiswe kokuthi `trans_choice` uma kudingeka sisebenzisa isimeli :count
okukhethekile:
{{ trans_choice('{0} There :form no apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
Okokugcina, ungakhohlwa ukubuyekeza amafayela akho okuhumusha nganoma yiziphi izinguquko ozenzile ekuhumusheni okuyisisekelo.
IsiNtaliyane:
{
"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"
}
Isi-French:
{
"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"
}
Ukuthola amadethi, sizosebenzisa amandla we I-Carbon , eza ne-Laravel ngokuzenzakalelayodefinita. Hlola Amadokhumenti ekhabhoni ; ungenza izinto eziningi ezithakazelisayo. Isibonelo, singasetha indawo yethu ngemithetho yedethi nesikhathi.
Ngesibonelo sethu esilula, sizobonisa idethi yamanje eyenziwe yaba eyasendaweni yolimi olukhethiwe. Kwethu routes/web.php
, sibuyekeza indlela yekhasi lokwamukela futhi sidlulisele umlayezo wedethi wendawo kwezethu view
wamukelekile:
<?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
]);
});
Masibuyekeze resources/views/welcome.blade.php
ingeza isibonisi sosuku, njengalokhu:
{{ __('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 }}
Izama ukushintsha ulimi ekhasini lasekhaya le localhost
, sizobona ukuthi amadethi manje sewasendaweni, isibonelo:
Emazweni ahlukene, abantu basebenzisa amafomethi ahlukene ukumela izinombolo, isibonelo:
Ngakho-ke, ukukhombisa lo mehluko kuhlelo lwakho lokusebenza lwe-Laravel, ungasebenzisa InomboloFormatter ngale ndlela elandelayo:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);
$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
Ungakwazi futhi ukubhala inombolo ngolimi oluthile futhi ubonise okuthile okufana nokuthi “izinkulungwane eziyikhulu namashumi amabili nantathu nekhulu namashumi amabili nantathu iphuzu elilodwa nambili”:
<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);
$num2 = NumberFormatter::create('fr', NumberFormatter::SPELLOUT);
Ngaphezu kwalokho, i-NumberFormatter ikuvumela ukuthi uthole imali kalula, isibonelo:
<?php
$currency1 = NumberFormatter::create('fr', NumberFormatter::CURRENCY);
$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
Ngakho for fr
uzobona ama-Euro, ngenkathi en_US
imali izoba ngamadola aseMelika.
Ercole Palmeri
I-Coveware ye-Veeam izoqhubeka nokuhlinzeka ngezinsizakalo zokuphendula izigameko zokuntshontshwa kwe-inthanethi. I-Coveware izohlinzeka ngama-forensics kanye nekhono lokulungisa…
Ukulungiswa okuqagelayo kuguqula umkhakha kawoyela negesi, ngendlela emisha nesebenzayo yokuphatha izitshalo.…
I-CMA yase-UK ikhiphe isexwayiso mayelana nokuziphatha kwe-Big Tech emakethe yezobunhloli bokwenziwa. Lapho…
Isinqumo esithi "Case Green", esakhiwe yi-European Union ukuze kuthuthukiswe ukusebenza kahle kwamandla ezakhiwo, siphothule inqubo yaso yomthetho ngokuthi...