Laravel este un instrument puternic care permite dezvoltatorilor să creeze site-uri web multilingve. Prin implementarea localizării web în proiectele dumneavoastră Laravel , puteți oferi o experiență de utilizator personalizată pentru vizitatori din medii lingvistice diferite, extinzându-vă în cele din urmă acoperirea și îmbunătățind implicarea utilizatorilor.
Vă vom ghida prin implementarea localizării în aplicația dvs. Laravel și vă vom prezenta un instrument care vă poate simplifica și îmbunătăți eforturile de localizare!
De ce ar trebui să localizați site-ul Laravel ?
Iată câteva motive importante pentru care ar trebui să vă localizați site-ul Laravel .
- Ajungeți la un public global: prin localizarea site-ului dvs. Laravel , puteți extinde acoperirea aplicației dvs. la un public internațional. Acest lucru permite utilizatorilor din diferite țări și medii lingvistice să înțeleagă și să interacționeze cu conținutul dvs.
- Îmbunătățește experiența utilizatorului: localizarea permite utilizatorilor să interacționeze cu aplicația în limba lor maternă, ceea ce îmbunătățește semnificativ experiența utilizatorului. Acest lucru poate crește ratele de implicare, poate reduce ratele de respingere și poate crește conversiile.
- Avantaj competitiv: pe o piață globală competitivă, oferirea de aplicații în mai multe limbi poate oferi un avantaj semnificativ față de concurenți. Acesta arată angajamentul dumneavoastră față de piețele internaționale și vă poate ajuta să intrați mai eficient pe noi piețe.
- Îmbunătățește SEO: site-urile web bine localizate tind să se claseze mai bine în motoarele de căutare pentru căutări într-o anumită limbă. Acest lucru vă poate crește traficul blogului și vizibilitatea online pe diverse piețe cu traducere multilingvă.
Cerințe pentru o localizare multilingvă Laravel
Există câțiva cerințe și pași de luat în considerare atunci când implementați localizarea multilingvă în Laravel .
- Pentru a obține cele mai recente funcții de localizare, asigurați-vă că utilizați cea mai recentă versiune a Laravel (de exemplu, versiunea 10.x).
- O înțelegere de bază a PHP și a cadrului Laravel va fi de ajutor în procesul de implementare.
- Configurați un mediu de dezvoltare locală sau un server care acceptă Laravel , inclusiv un server web și o bază de date.
- Determinați de la început limbile pe care aplicația dvs. le va accepta.
Traduceri simple Laravel
După ce am înțeles ce cerințe trebuie îndeplinite înainte de a traduce o aplicație Laravel sau web, vom oferi câțiva pași pentru a traduce simplu Laravel .
Pentru a face acest lucru, deschideți fișierul de vizualizare pe care doriți să îl localizați, de exemplu, resources/views/welcome.blade.php. Apoi, înlocuiți eticheta body cu următorul cod.
Welcome to Linguise website!
După cum puteți vedea, textul de mai sus este în prezent scris direct în cod. Acest lucru este mai puțin eficient și face dificilă traducerea site-urilor web în diferite limbi (internaționalizare).
Vom face textul de mai sus mai flexibil, astfel încât să poată fi adaptat cu ușurință în diferite limbi. Laravel oferă o caracteristică foarte utilă pentru aceasta; sistemul de localizare. Ca prim pas, înlocuiți textul existent cu următorul cod.
{{ __('Welcome to Linguise website!') }}
Laravel va afișa textul de mai sus în mod implicit și va căuta traducerea dacă utilizatorul selectează o altă limbă decât engleza. În acest caz, engleza va fi folosită ca limbă implicită a aplicației.
Configurarea localităților într-un web multilingv Laravel
Dar cum determină Laravel limba curentă sau știe ce limbi sunt disponibile în aplicație? Verifică setările locale din fișierul config/app.php. Deschideți acest fișier și căutați următoarele două chei.
/*
|--------------------------------------------------------------------------
| 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',
Explicația de deasupra tastelor ar trebui să fie clară. În rezumat, cheia locală deține localitatea implicită pentru aplicația dvs. (dacă nu este specificată nicio altă localitate în cod). Fallback_locale este activat dacă în aplicația dvs. este solicitată o localitate inexistentă.
Acum, să adăugăm o nouă cheie la acest fișier pentru a oferi o listă cu toate localurile acceptate.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
În acest moment, am încercat ca Laravel web să accepte trei limbi, și anume engleză, italiană și franceză.
Prezentare generală a fișierelor de traducere Laravel
În Laravel , ca și în multe alte cadre, traducerile pentru diferite limbi sunt stocate în fișiere separate. Sunt utilizate două metode pentru organizarea acestor fișiere de traducere.
Metoda mai veche stochează fișierele în următoarea structură: resources/lang/{en,fr,it}/{myfile.php}. Metoda mai nouă utilizează fișiere JSON, cum ar fi resources/lang/{fr.json, it.json}. Acest articol se va concentra pe metoda mai nouă, deși principiile sunt similare pentru metoda mai veche, în afară de diferențele în modul în care sunt denumite și accesate cheile de traducere.
Pentru limbile cu variații regionale, ar trebui să denumiți directoarele sau fișierele de limbă conform standardului ISO 15897. De exemplu, engleza britanică ar fi numită en_GB în loc de en-gb.
Informații generale
În Laravel , ca și în cazul multor cadre, traducerile pentru diferite limbi sunt stocate în fișiere separate. Există două metode principale de organizare a fișierelor de traducere Laravel .
- Abordarea moștenită implică stocarea fișierelor sub calea: resources/lang/{en,fr,it}/{myfile.php}.
- Abordarea modernă utilizează fișiere resurse/lang/{fr.json, it.json}.
Acest articol se va concentra pe a doua metodă, deși principiile sunt aplicabile ambelor (cu variații în modul în care sunt denumite și accesate cheile de traducere).
Pentru limbile care variază în funcție de regiune, se recomandă denumirea directoarelor/fișierelor de limbi conform standardelor ISO 15897. De exemplu, engleza britanică ar fi desemnată ca en_GB mai degrabă decât en-gb.
Crearea fișierelor de traducere Laravel
După ce am configurat localurile pentru aplicația noastră, putem trece la traducerea mesajului nostru implicit de bun venit.
Să începem prin a crea noi fișiere de localizare în format JSON în directorul resurse/lang. Mai întâi, vom crea un fișier resources/lang/it.json și îl vom popula cu traducerile corespunzătoare.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Apoi, adăugați un fișier resurse/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
După cum puteți observa, facem referire în mod constant la mesajul implicit din fișierul welcome.blade.php ({{ __('Bine ați venit pe site-ul Linguise !') }}). Nu este nevoie să creați un fișier en.json, deoarece Laravel recunoaște automat că mesajele implicite sunt în engleză.
Setarea comutatorului de limbă într-o aplicație multilingvă Laravel
În plus, Laravel nu este încă configurat pentru a suprascrie limba locală, așa că deocamdată ne vom ocupa de traducere direct în cadrul rutei. Modificați ruta implicită de bun venit în fișierul routes/web.php astfel.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
În acest caz, capturăm un parametru GET opțional și setăm localitatea curentă pe baza acestuia (dacă localitatea solicitată este acceptată).
Acum, puteți să vă vizitați site-ul web și să includeți oricare dintre limbile acceptate ca prim segment în adresa URL. De exemplu, navigarea la localhost/it sau localhost/fr va afișa conținutul localizat. Dacă nu specificați o locație sau alegeți una care nu este acceptată, Laravel va utiliza implicit limba engleză (en).
Middleware de localizare pentru Laravel
Includerea localizării în fiecare adresă URL ar putea să nu fie ideală și ar putea perturba atractivitatea vizuală a site-ului. Pentru a rezolva acest lucru, vom configura un comutator de limbă și vom folosi sesiunea utilizator pentru a afișa conținutul tradus. Puteți crea un nou middleware în fișierul app/Http/Middleware/Localization.php sau îl puteți genera prin rularea comenzii artisan make:middleware Localization.
Apoi, adăugați următorul cod în interior.
Acest middleware va direcționa Laravel să folosească locația selectată de utilizator dacă această opțiune este prezentă în sesiune.
Deoarece avem nevoie ca operația să ruleze la fiecare solicitare, adăugați-o la stiva de middleware implicită în app/Http/Kernel.php pentru grupul de middleware 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\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
Modificarea rutelor
Apoi, definiți o rută pentru a schimba localitatea în fișierul routes/web.php. Folosim o rută de închidere aici, dar puteți plasa același cod într-un controler dacă preferați.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
În plus, eliminați comutarea locală care a fost adăugată anterior rutei implicite de bun venit. Ruta dvs. rădăcină ar trebui să arate acum astfel.
Route::get('/', function () {
return view('welcome');
});
Odată ce a făcut acest lucru, utilizatorul poate schimba limba activă doar vizitând localhost/language/{locale}. Localizarea selectată va fi salvată în sesiune, iar utilizatorii vor fi redirecționați înapoi la pagina lor anterioară (așa cum este gestionată de middleware-ul de localizare).
Pentru a-l testa, accesați localhost/language/it (presupunând că cookie-ul de sesiune este activ în browser) și ar trebui să vedeți conținutul tradus. Puteți naviga pe site sau reîmprospăta pagina, iar limba aleasă va rămâne în vigoare.
Implementarea comutatorului de limbi
Acum, trebuie să oferim utilizatorului o opțiune pe care se poate face clic pentru a schimba comutatorul de limbi Laravel web, mai degrabă decât să le cerem să introducă manual codurile locale în adresa URL. Pentru a realiza acest lucru, creați un comutator simplu de limbă. Adăugați un fișier nou la resources/views/partials/language_switcher.blade.php și introduceți următorul cod.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Pentru a include comutatorul de limbă nou creat în vizualizarea „bun venit”, pur și simplu adăugați următoarea linie în fișierul welcome.blade.php unde doriți să apară comutatorul.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Deschideți fișierul app/Providers/AppServiceProvider.php și adăugați următorul cod în metoda boot() pentru a partaja localitatea curentă cu toate vizualizările atunci când este utilizat comutatorul de limbă
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Funcții avansate de traducere în Laravel PHP
În această discuție, ne vom ocupa apoi de alte componente de localizare, și anume data, numărul și moneda. Iată pașii.
Date localizate în Laravel
Gestionarea datelor și orelor este crucială în procesul de localizare. Laravel folosește Carbon pentru a gestiona datele și orele. Iată cum puteți utiliza Carbon pentru a afișa o dată localizată.
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
]);
});
Acest cod setează localitatea Carbon pe baza localizării curente a aplicației și formatează data în consecință.
Pentru a afișa data localizată într-o vizualizare:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
Formatarea numerelor și a monedelor
Diferite țări au diferite moduri de formatare a numerelor. De exemplu.
- Franța → 123 123,12
- Germania → 123.123,12
- Japonia → 123.123
Pentru a adapta aceste variații în aplicația dvs. Laravel , puteți utiliza NumberFormatter.
De asemenea, puteți scrie numerele într-o anumită limbă.
Aici sunt monedele. Pentru localitatea franceză (`fr`), moneda va fi afișată în euro (€), în timp ce pentru localitatea SUA (`en_US`), va fi afișată în dolari SUA ($).
Soluție alternativă Localizare Laravel cu Linguise
După înțelegerea pașilor de localizare Laravel , așa cum este descris în articol, acest proces implică mulți pași care necesită ca utilizatorii să înțeleagă în profunzime codul programului Laravel .
Acest lucru poate îngreuna cu siguranță utilizatorii începători care doresc să își localizeze aplicațiile. Prin urmare, este nevoie de o soluție mai inovatoare, care să fie capabilă de traducere rapidă, să accepte localizarea și să necesite doar câțiva pași simpli pentru implementare.
O soluție promițătoare este Linguise . Linguise oferă o abordare mai ușoară și mai eficientă a localizării Laravel fără a fi nevoie de cunoștințe aprofundate de codificare. Printre caracteristicile cheie ale Linguise se numără.
- Integrare ușoară cu Laravel
- Personalizați comutatorul de limbi fără codare
- Traducerea imaginii
- Editor live pentru a personaliza traducerile în contextul local
- Traducere dinamică pentru conținut generat dinamic
- Optimizare SEO pentru versiuni în mai multe limbi
Pașii de instalare Linguise pe site-urile Laravel pot fi, de asemenea, făcuți cu ușurință. Iată o scurtă explicație.
- Creați un cont Linguise (utilizați gratuit perioada de încercare gratuită de 30 de zile)
- Înregistrați-vă domeniul web Laravel și introduceți câteva informații. Veți primi o cheie API.
- Încărcați și conectați scriptul de traducere Linguise la folderul Laravel pe care îl aveți.
- Configurați adrese URL de limbă în fișierul htaccess.
- Introduceți scriptul de comutare de limbă în capul codului HTML.
- Personalizați comutatorul de limbă după cum este necesar
- Comutatorul de limbă va apărea pe web Laravel , iar conținutul poate fi tradus automat.
Cum? Cu Linguise , trebuie doar să vă înregistrați și să activați, iar comutatorul de limbă va apărea. După aceea, sunteți liber să localizați, de exemplu, prin intermediul editorului live, să traduceți conținut media, imagini etc.
Concluzie
Localizarea Laravel este o caracteristică puternică care permite dezvoltatorilor să creeze site-uri web și aplicații multilingve. După cum am văzut, procesul de localizare Laravel încorporat implică mai mulți pași și necesită o bună înțelegere a cadrului. Poate fi o provocare pentru începători sau pentru cei care caută o soluție mai rapidă.
Instrumente precum Linguise oferă o alternativă inovatoare pentru cei care caută o abordare mai simplificată. Aceste soluții oferă capabilități de traducere rapidă, integrare ușoară și caracteristici ușor de utilizat, cum ar fi comutatoarele de limbi personalizabile și traducerea imaginilor. Acum, creează-ți contul Linguise și bucură-te de funcția noastră de localizare Laravel !