Laravel -lokalisatie is een krachtig hulpmiddel waarmee ontwikkelaars meertalige websites kunnen maken. Door weblokalisatie in uw Laravel -projecten te implementeren, kunt u bezoekers met verschillende taalachtergronden een gepersonaliseerde gebruikerservaring bieden, waardoor uw bereik uiteindelijk wordt vergroot en de gebruikersbetrokkenheid wordt verbeterd.
We begeleiden u bij het implementeren van lokalisatie in uw Laravel -applicatie en laten u kennismaken met een tool die uw lokalisatie-inspanningen kan vereenvoudigen en verbeteren!
Waarom zou u de Laravel -website lokaliseren?
Hier zijn enkele belangrijke redenen waarom u uw Laravel -website zou moeten lokaliseren.
- Bereik een wereldwijd publiek: door uw Laravel -website te lokaliseren, kunt u het bereik van uw app uitbreiden naar een internationaal publiek. Hierdoor kunnen gebruikers uit verschillende landen en taalachtergronden uw inhoud begrijpen en ermee communiceren.
- Verbetert de gebruikerservaring: Door lokalisatie kunnen gebruikers in hun moedertaal met de app communiceren, wat de gebruikerservaring aanzienlijk verbetert. Dit kan de betrokkenheidspercentages verhogen, het bouncepercentage verlagen en het aantal conversies verhogen.
- Concurrentievoordeel: In een competitieve wereldmarkt kan het aanbieden van apps in meerdere talen een aanzienlijke voorsprong op de concurrentie opleveren. Het toont uw betrokkenheid bij internationale markten en kan u helpen nieuwe markten effectiever te betreden.
- Verbetert SEO: Goed gelokaliseerde websites scoren doorgaans beter in zoekmachines voor zoekopdrachten in een bepaalde taal. Dit kan uw blogverkeer en online zichtbaarheid in verschillende markten vergroten met meertalige vertalingen.
Vereisten voor een meertalige Laravel lokalisatie
Er zijn een aantal vereisten en stappen waarmee u rekening moet houden bij het implementeren van meertalige lokalisatie in Laravel .
- Om over de nieuwste lokalisatiefuncties te beschikken, moet u ervoor zorgen dat u de nieuwste versie van Laravel gebruikt (bijvoorbeeld versie 10.x).
- Een basiskennis van PHP en het Laravel -framework zal nuttig zijn bij het implementatieproces.
- Zet een lokale ontwikkelomgeving of server op die Laravel ondersteunt, inclusief een webserver en database.
- Bepaal vanaf het begin de talen die uw applicatie ondersteunt.
Eenvoudige Laravel vertalingen
Nadat we hebben begrepen aan welke vereisten moet worden voldaan voordat een Laravel -applicatie of -web wordt vertaald, zullen we enkele stappen geven om Laravel eenvoudig te vertalen.
Om dit te doen, opent u het weergavebestand dat u wilt lokaliseren, bijvoorbeeld resources/views/welcome.blade.php. Vervang vervolgens de body-tag door de volgende code.
Welcome to Linguise website!
Zoals u kunt zien, is de bovenstaande tekst momenteel rechtstreeks in de code geschreven. Dit is minder efficiënt en maakt het moeilijk om websites naar verschillende talen te vertalen (internationalisering).
We gaan bovenstaande tekst flexibeler maken, zodat deze gemakkelijk aan verschillende talen kan worden aangepast. Laravel biedt hiervoor een zeer nuttige functie; het lokalisatiesysteem. Vervang als eerste stap de bestaande tekst door de volgende code.
{{ __('Welcome to Linguise website!') }}
Laravel zal standaard bovenstaande tekst weergeven en de vertaling opzoeken als de gebruiker een andere taal dan Engels selecteert. In dit geval wordt Engels gebruikt als de standaardtaal van de toepassing.
Landinstellingen instellen in een meertalig Laravel -web
Maar hoe bepaalt Laravel de huidige taal of weet welke talen beschikbaar zijn in de applicatie? Het controleert de landinstellingen in het bestand config/app.php. Open dit bestand en zoek naar de volgende twee sleutels.
/*
|--------------------------------------------------------------------------
| 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',
De uitleg boven de toetsen moet duidelijk zijn. Samenvattend bevat de landinstellingssleutel de standaardlandinstelling voor uw toepassing (als er geen andere landinstelling is opgegeven in de code). De fallback_locale wordt geactiveerd als er in uw toepassing een niet-bestaande landinstelling wordt aangevraagd.
Laten we nu een nieuwe sleutel aan dit bestand toevoegen om een lijst met alle ondersteunde landinstellingen te verkrijgen.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
Op dit moment hebben we Laravel web geprobeerd om drie talen te ondersteunen, namelijk Engels, Italiaans en Frans.
Overzicht Laravel vertaalbestanden
In Laravel worden, net als in veel andere frameworks, vertalingen voor verschillende talen in afzonderlijke bestanden opgeslagen. Er worden twee methoden gebruikt voor het organiseren van deze vertaalbestanden.
De oudere methode slaat bestanden op in de volgende structuur: resources/lang/{en,fr,it}/{myfile.php}. De nieuwere methode maakt gebruik van JSON-bestanden, zoals resources/lang/{fr.json, it.json}. Dit artikel zal zich concentreren op de nieuwere methode, hoewel de principes voor de oudere methode vergelijkbaar zijn, afgezien van verschillen in de manier waarop vertaalsleutels worden benoemd en gebruikt.
Voor talen met regionale variaties moet u de taalmappen of bestanden een naam geven volgens de ISO 15897-standaard. Brits Engels zou bijvoorbeeld en_GB worden genoemd in plaats van en-gb.
Algemene informatie
In Laravel worden, zoals bij veel raamwerken, vertalingen voor verschillende talen in afzonderlijke bestanden opgeslagen. Er zijn twee primaire methoden voor het organiseren Laravel vertaalbestanden.
- De oudere aanpak houdt in dat bestanden worden opgeslagen onder het pad: resources/lang/{en,fr,it}/{myfile.php}.
- De moderne aanpak maakt gebruik van resources/lang/{fr.json, it.json}-bestanden.
Dit artikel concentreert zich op de tweede methode, hoewel de principes op beide van toepassing zijn (met variaties in de manier waarop vertaalsleutels worden benoemd en gebruikt).
Voor talen die per regio verschillen, wordt aanbevolen om taalmappen/bestanden een naam te geven volgens de ISO 15897-normen. Brits Engels zou bijvoorbeeld worden aangeduid als en_GB in plaats van en-gb.
Laravel vertaalbestanden maken
Nadat we de landinstellingen voor onze applicatie hebben geconfigureerd, kunnen we doorgaan met het vertalen van ons standaard welkomstbericht.
Laten we beginnen met het maken van nieuwe lokalisatiebestanden in JSON-indeling in de directory resources/lang. Eerst maken we een resources/lang/it.json-bestand en vullen dit in met de juiste vertalingen.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Voeg vervolgens een resources/lang/fr.json-bestand toe.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Zoals u kunt zien, verwijzen we consequent naar het standaardbericht uit het bestand Welcome.blade.php ({{ __('Welkom op de Linguise website!') }}). Het is niet nodig om een en.json-bestand te maken, omdat Laravel automatisch herkent dat de standaardberichten in het Engels zijn.
Taalwisselaar instellen in een meertalige Laravel -app
Bovendien is Laravel nog niet ingesteld om de lokale taal te overschrijven, dus voorlopig zullen we de vertaling rechtstreeks binnen de route afhandelen. Wijzig de standaard welkomstroute in het routes/web.php-bestand als volgt.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
In dit geval leggen we een optionele locale GET-parameter vast en stellen we de huidige locale op basis daarvan in (als de gevraagde locale wordt ondersteund).
Nu kunt u uw website bezoeken en een van de ondersteunde talen als eerste segment in de URL opnemen. Als u bijvoorbeeld naar localhost/it of localhost/fr navigeert, wordt de gelokaliseerde inhoud weergegeven. Als je geen landinstelling opgeeft of er een kiest die niet wordt ondersteund, zal Laravel standaard Engels (en) gebruiken.
Lokalisatie-middleware voor Laravel
Het opnemen van de landinstelling in elke URL is mogelijk niet ideaal en kan de visuele aantrekkingskracht van de site verstoren. Om dit aan te pakken, zullen we een taalwisselaar instellen en de gebruikerssessie gebruiken om de vertaalde inhoud weer te geven. U kunt nieuwe middleware maken in het bestand app/Http/Middleware/Localization.php, of deze genereren door de artisan make:middleware Localization-opdracht uit te voeren.
Voeg vervolgens de volgende code toe.
Deze middleware zal Laravel opdracht geven de door de gebruiker geselecteerde locatie te gebruiken als deze optie aanwezig is in de sessie.
Omdat we de bewerking bij elk verzoek moeten uitvoeren, voegt u deze toe aan de standaard middleware-stack in app/Http/Kernel.php voor de web-middleware-groep.
/**
* 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
],
Routes aanpassen
Definieer vervolgens een route om de landinstelling in het routes/web.php-bestand te wijzigen. We gebruiken hier een sluitingsroute, maar u kunt desgewenst dezelfde code in een controller plaatsen.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Verwijder bovendien de landinstelling die eerder aan de standaardwelkomstroute was toegevoegd. Uw rootroute zou er nu als volgt uit moeten zien.
Route::get('/', function () {
return view('welcome');
});
Zodra dit is gebeurd, kan de gebruiker de actieve taal alleen wijzigen door naar localhost/taal/{locale} te gaan. De geselecteerde landinstelling wordt in de sessie opgeslagen en gebruikers worden teruggestuurd naar hun vorige pagina (zoals afgehandeld door de Lokalisatie-middleware).
Om het te testen, gaat u naar localhost/taal/it (ervan uitgaande dat de sessiecookie actief is in uw browser) en u zou de vertaalde inhoud moeten zien. U kunt door de site navigeren of de pagina vernieuwen, de gekozen taal blijft van kracht.
Implementatie van taalwisselaar
Nu moeten we de gebruiker een klikbare optie bieden om de taalwisselaar Laravel Web in plaats van te eisen dat hij handmatig landcodes in de URL invoert. Om dit te bereiken, maakt u een eenvoudige taalwisselaar. Voeg een nieuw bestand toe op resources/views/partials/lingual_switcher.blade.php en voer de volgende code in.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Om de nieuw gemaakte taalwisselaar in de welkomstweergave op te nemen, voegt u eenvoudigweg de volgende regel toe aan uw welkomst.blade.php-bestand waar u de wisselaar wilt laten verschijnen.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Open het bestand app/Providers/AppServiceProvider.php en voeg de volgende code toe in de boot()-methode om de huidige landinstelling met alle weergaven te delen wanneer de taalwisselaar wordt gebruikt
* 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'));
});
}
Geavanceerde vertaalfuncties in Laravel PHP
In deze discussie zullen we vervolgens andere lokalisatiecomponenten behandelen, namelijk datum, nummer en valuta. Hier zijn de stappen.
Gelokaliseerde data in Laravel
Het omgaan met datums en tijden is cruciaal in het lokalisatieproces. Laravel gebruikt Carbon om datums en tijden te beheren. Zo kunt u Carbon gebruiken om een gelokaliseerde datum weer te geven.
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
]);
});
Deze code stelt de Carbon-landinstelling in op basis van de huidige landinstelling van de toepassing en formatteert de datum dienovereenkomstig.
Om de gelokaliseerde datum in een weergave weer te geven:
{{ __('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 }}
Getallen en valuta's opmaken
Verschillende landen hebben verschillende manieren om getallen op te maken. Bijvoorbeeld.
- Frankrijk → 123 123,12
- Duitsland → 123.123,12
- Japan → 123.123
Om deze variaties in uw Laravel -applicatie op te vangen, kunt u NumberFormatter gebruiken.
U kunt getallen ook in een specifieke taal spellen.
Hier zijn de valuta's. Voor de Franse landinstelling (`fr`) wordt de valuta weergegeven in euro's (€), terwijl deze voor de Amerikaanse landinstelling (`en_US`) wordt weergegeven in Amerikaanse dollars ($).
Alternatieve oplossing Laravel -lokalisatie met Linguise
Na het begrijpen van de stappen van Laravel lokalisatie zoals beschreven in het artikel, omvat dit proces vele stappen waarvoor gebruikers de Laravel programmacode diepgaand moeten begrijpen.
Dit kan het zeker lastig maken voor beginnende gebruikers die hun applicaties willen lokaliseren. Daarom is er een meer innovatieve oplossing nodig die in staat is tot snelle vertaling, lokalisatie ondersteunt en slechts een paar eenvoudige stappen vereist om te implementeren.
Een veelbelovende oplossing is Linguise . Linguise biedt een eenvoudigere en efficiëntere benadering van Laravel lokalisatie zonder dat diepgaande codeerkennis nodig is. De belangrijkste kenmerken van Linguise zijn onder meer:
- Eenvoudige integratie met Laravel
- Pas de taalwisselaar aan zonder codering
- Beeldvertaling
- Live-editor om vertalingen aan te passen aan de lokale context
- Dynamische vertaling voor dynamisch gegenereerde inhoud
- SEO-optimalisatie voor meertalige versies
De stappen om Linguise op Laravel -websites te installeren kunnen ook eenvoudig worden uitgevoerd. Hier is een korte uitleg.
- Maak een Linguise account aan (gebruik de gratis proefperiode van 30 dagen gratis)
- Registreer uw Laravel webdomein en voer enkele gegevens in. Je krijgt een API-sleutel.
- Upload het Linguise vertaalscript en verbind het met de Laravel -map die u heeft.
- Stel taal-URL's in in het htaccess-bestand.
- Plaats het taalwisselscript in de kop van uw HTML.
- Pas de taalwisselaar indien nodig aan
- De taalwisselaar verschijnt op het Laravel -web en de inhoud kan automatisch worden vertaald.
Hoe? Met Linguise hoeft u zich alleen maar te registreren en te activeren, waarna de taalwisselaar verschijnt. Daarna bent u vrij om bijvoorbeeld via de live-editor te lokaliseren, media, afbeeldingen, enz. te vertalen.
Gevolgtrekking
Laravel lokalisatie is een krachtige functie waarmee ontwikkelaars meertalige websites en applicaties kunnen maken. Zoals we hebben gezien omvat het ingebouwde Laravel -lokalisatieproces meerdere stappen en vereist dit een goed begrip van het raamwerk. Het kan een uitdaging zijn voor beginners of mensen die op zoek zijn naar een snellere oplossing.
Tools als Linguise bieden een innovatief alternatief voor wie op zoek is naar een meer gestroomlijnde aanpak. Deze oplossingen bieden snelle vertaalmogelijkheden, eenvoudige integratie en gebruiksvriendelijke functies zoals aanpasbare taalwisselaars en beeldvertaling. nu uw Linguise account en profiteer van onze functie voor het lokaliseren van uw Laravel !