Laravel è un potente strumento che consente agli sviluppatori di creare siti Web multilingue. Implementando la localizzazione web nei tuoi Laravel , puoi fornire un'esperienza utente personalizzata per visitatori provenienti da contesti linguistici diversi, ampliando in definitiva la tua portata e migliorando il coinvolgimento degli utenti.
Ti guideremo attraverso l'implementazione della localizzazione nella tua applicazione Laravel e ti presenteremo uno strumento che può semplificare e migliorare i tuoi sforzi di localizzazione!
Perché dovresti localizzare il sito web Laravel ?
Ecco alcuni motivi importanti per cui dovresti localizzare il tuo sito web Laravel .
- Raggiungi un pubblico globale: localizzando il tuo Laravel , puoi estendere la portata della tua app a un pubblico internazionale. Ciò consente agli utenti di diversi paesi e background linguistici di comprendere e interagire con i tuoi contenuti.
- Migliora l'esperienza dell'utente: la localizzazione consente agli utenti di interagire con l'app nella loro lingua madre, migliorando notevolmente l'esperienza dell'utente. Ciò può aumentare i tassi di coinvolgimento, ridurre la frequenza di rimbalzo e aumentare le conversioni.
- Vantaggio competitivo: in un mercato globale competitivo, offrire app in più lingue può fornire un vantaggio significativo rispetto alla concorrenza. Dimostra il tuo impegno nei confronti dei mercati internazionali e può aiutarti a entrare in nuovi mercati in modo più efficace.
- Migliora il SEO: i siti web ben localizzati tendono a posizionarsi meglio nei motori di ricerca per le ricerche in una lingua particolare. Ciò può aumentare il traffico del tuo blog e la visibilità online in vari mercati con la traduzione multilingue.
Requisiti per una localizzazione Laravel multilingue
Ci sono alcuni requisiti e passaggi da considerare quando si implementa la localizzazione multilingue in Laravel .
- Per ottenere le funzionalità di localizzazione più recenti, assicurati di utilizzare l'ultima versione di Laravel (ad esempio, la versione 10.x).
- Una conoscenza di base di PHP e del framework Laravel sarà utile nel processo di implementazione.
- Configura un ambiente di sviluppo locale o un server che supporti Laravel , inclusi un server Web e un database.
- Determina fin dall'inizio le lingue che la tua applicazione supporterà.
Traduzioni semplici Laravel
Dopo aver compreso quali requisiti devono essere soddisfatti prima di tradurre un'applicazione o un sito web Laravel , forniremo alcuni passaggi per tradurre Laravel in modo semplice.
Per fare ciò, apri il file di visualizzazione che desideri localizzare, ad esempio resources/views/welcome.blade.php. Quindi, sostituisci il tag body con il seguente codice.
Welcome to Linguise website!
Come puoi vedere, il testo sopra è attualmente scritto direttamente nel codice. Ciò è meno efficiente e rende difficile la traduzione dei siti Web in lingue diverse (internazionalizzazione).
Renderemo il testo sopra più flessibile in modo che possa essere facilmente adattato a diverse lingue. Laravel fornisce una funzionalità molto utile per questo; il sistema di localizzazione. Come primo passaggio, sostituisci il testo esistente con il seguente codice.
{{ __('Welcome to Linguise website!') }}
Laravel visualizzerà il testo sopra per impostazione predefinita e cercherà la traduzione se l'utente seleziona una lingua diversa dall'inglese. In questo caso, l'inglese verrà utilizzato come lingua predefinita dell'applicazione.
Configurazione delle impostazioni locali in un Web multilingue Laravel
Ma come fa Laravel a determinare la lingua corrente o a sapere quali lingue sono disponibili nell'applicazione? Controlla le impostazioni locali nel file config/app.php. Apri questo file e cerca le due chiavi seguenti.
/*
|--------------------------------------------------------------------------
| 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',
La spiegazione sopra i tasti dovrebbe essere chiara. In sintesi, la chiave locale contiene la locale predefinita per la tua applicazione (se nel codice non è specificata nessun'altra locale). fallback_locale viene attivato se nell'applicazione viene richiesta una locale inesistente.
Ora aggiungiamo una nuova chiave a questo file per fornire un elenco di tutte le versioni locali supportate.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
A questo punto, abbiamo provato Laravel web a supportare tre lingue, ovvero inglese, italiano e francese.
Panoramica dei file di traduzione Laravel
In Laravel , come in molti altri framework, le traduzioni per lingue diverse sono archiviate in file separati. Vengono utilizzati due metodi per organizzare questi file di traduzione.
Il metodo precedente memorizza i file nella seguente struttura: resources/lang/{en,fr,it}/{myfile.php}. Il metodo più recente utilizza file JSON, come resources/lang/{fr.json, it.json}. Questo articolo si concentrerà sul metodo più recente, sebbene i principi siano simili per il metodo precedente, a parte le differenze nel modo in cui le chiavi di traduzione vengono denominate e accessibili.
Per le lingue con variazioni regionali, è necessario denominare le directory o i file della lingua secondo lo standard ISO 15897. Ad esempio, l'inglese britannico si chiamerebbe en_GB anziché en-gb.
informazioni generali
In Laravel , come in molti framework, le traduzioni per lingue diverse sono archiviate in file separati. Esistono due metodi principali per organizzare i file di traduzione Laravel .
- L'approccio legacy prevede la memorizzazione dei file nel percorso: resources/lang/{en,fr,it}/{myfile.php}.
- L'approccio moderno utilizza file resources/lang/{fr.json, it.json}.
Questo articolo si concentrerà sul secondo metodo, sebbene i principi siano applicabili a entrambi (con variazioni nel modo in cui le chiavi di traduzione vengono denominate e accessibili).
Per le lingue che variano in base alla regione, si consiglia di denominare le directory/file della lingua in base agli standard ISO 15897. Ad esempio, l'inglese britannico verrebbe indicato come en_GB anziché en-gb.
Creazione di file di traduzione Laravel
Dopo aver configurato le impostazioni locali per la nostra applicazione, possiamo procedere con la traduzione del nostro messaggio di benvenuto predefinito.
Iniziamo creando nuovi file di localizzazione in formato JSON all'interno della directory resources/lang. Per prima cosa creeremo un file resources/lang/it.json e lo popoleremo con le traduzioni appropriate.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Successivamente, aggiungi un file resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Come puoi osservare, facciamo costantemente riferimento al messaggio predefinito dal file Welcome.blade.php ({{ __('Welcome to Linguise website!') }}). Non è necessario creare un file en.json, poiché Laravel riconosce automaticamente che i messaggi predefiniti sono in inglese.
Impostazione del cambio di lingua in un'app multilingue Laravel
Inoltre, Laravel non è ancora impostato per sovrascrivere la lingua locale, quindi per ora gestiremo la traduzione direttamente all'interno del percorso. Modifica il percorso di benvenuto predefinito all'interno del file Routes/web.php in questo modo.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
In questo caso, stiamo acquisendo un parametro locale GET opzionale e impostando il locale corrente in base ad esso (se il locale richiesto è supportato).
Ora puoi visitare il tuo sito web e includere una qualsiasi delle lingue supportate come primo segmento nell'URL. Ad esempio, la navigazione su localhost/it o localhost/fr visualizzerà il contenuto localizzato. Se non specifichi una locale o ne scegli una non supportata, Laravel utilizzerà per impostazione predefinita l'inglese (en).
Middleware di localizzazione per Laravel
Includere la lingua in ogni URL potrebbe non essere l'ideale e potrebbe compromettere l'attrattiva visiva del sito. Per risolvere questo problema, imposteremo un cambio di lingua e utilizzeremo la sessione utente per visualizzare il contenuto tradotto. Puoi creare un nuovo middleware nel file app/Http/Middleware/Localization.php o generarlo eseguendo il comando artigianale make:middleware Localization.
Quindi, aggiungi il seguente codice all'interno.
Questo middleware indirizzerà Laravel a utilizzare la posizione selezionata dall'utente se questa opzione è presente nella sessione.
Poiché è necessario che l'operazione venga eseguita a ogni richiesta, aggiungila allo stack middleware predefinito in app/Http/Kernel.php per il gruppo 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
],
Modifica percorsi
Successivamente, definisci un percorso per modificare la locale nel file Routes/web.php. In questo caso utilizziamo un percorso di chiusura, ma se preferisci puoi inserire lo stesso codice all'interno di un controller.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Inoltre, rimuovi il cambio di lingua precedentemente aggiunto al percorso di benvenuto predefinito. Il tuo percorso root ora dovrebbe assomigliare a questo.
Route::get('/', function () {
return view('welcome');
});
Fatto ciò, l'utente può solo cambiare la lingua attiva visitando localhost/lingua/{locale}. Le impostazioni locali selezionate verranno salvate nella sessione e gli utenti verranno reindirizzati alla pagina precedente (come gestito dal middleware di localizzazione).
Per testarlo, vai su localhost/lingua/it (assumendo che il cookie di sessione sia attivo nel tuo browser) e dovresti vedere il contenuto tradotto. Puoi navigare nel sito o aggiornare la pagina e la lingua scelta rimarrà attiva.
Implementazione del cambio di lingua
Ora, dobbiamo fornire all'utente un'opzione cliccabile per cambiare il selettore di lingua Laravel web invece di richiedere loro di inserire manualmente i codici locali nell'URL. Per raggiungere questo obiettivo, crea un semplice commutatore di lingua. Aggiungi un nuovo file in resources/views/partials/lingual_switcher.blade.php e inserisci il seguente codice.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Per includere il commutatore di lingua appena creato nella vista "benvenuto", aggiungi semplicemente la seguente riga al file Welcome.blade.php nel punto in cui desideri che appaia il commutatore.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Apri il file app/Providers/AppServiceProvider.php e aggiungi il seguente codice nel metodo boot() per condividere la locale corrente con tutte le visualizzazioni quando viene utilizzato il selettore di lingua
* 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'));
});
}
Funzionalità di traduzione avanzate in Laravel PHP
In questa discussione tratteremo poi altri componenti della localizzazione, ovvero data, numero e valuta. Ecco i passaggi.
Date localizzate in Laravel
La gestione di date e orari è fondamentale nel processo di localizzazione. Laravel utilizza Carbon per gestire date e orari. Ecco come puoi utilizzare Carbon per visualizzare una data localizzata.
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
]);
});
Questo codice imposta la locale Carbon in base alla locale corrente dell'applicazione e formatta la data di conseguenza.
Per visualizzare la data localizzata in una vista:
{{ __('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 }}
Formattazione di numeri e valute
Paesi diversi hanno vari modi di formattare i numeri. Ad esempio.
- Francia → 123 123,12
- Germania → 123.123,12
- Giappone → 123.123
Per accogliere queste variazioni nella tua applicazione Laravel , puoi utilizzare NumberFormatter.
Puoi anche scrivere i numeri in una lingua specifica.
Ecco le valute. Per la locale francese (`fr`), la valuta verrà visualizzata in euro (€), mentre per la locale statunitense (`en_US`), verrà mostrata in dollari statunitensi ($).
Soluzione alternativa Localizzazione Laravel con Linguise
Dopo aver compreso i passaggi della localizzazione Laravel come descritti nell'articolo, questo processo prevede molti passaggi che richiedono agli utenti di comprendere in modo approfondito il codice del programma Laravel .
Ciò può certamente rendere difficile per gli utenti inesperti che desiderano localizzare le proprie applicazioni. Pertanto, è necessaria una soluzione più innovativa che sia in grado di effettuare una traduzione rapida, supporti la localizzazione e richieda solo pochi semplici passaggi per l’implementazione.
Una soluzione promettente è Linguise . Linguise offre un approccio più semplice ed efficiente alla localizzazione Laravel senza la necessità di una conoscenza approfondita della codifica. Le caratteristiche principali di Linguise includono.
- Facile integrazione con Laravel
- Personalizza il cambio di lingua senza codifica
- Traduzione di immagini
- Editor live per personalizzare le traduzioni nel contesto locale
- Traduzione dinamica per contenuti generati dinamicamente
- Ottimizzazione SEO per versioni multilingue
i passaggi per installare Linguise sui siti Web Laravel possono essere eseguiti facilmente. Ecco una breve spiegazione.
- Crea un account Linguise (usa gratuitamente la prova gratuita di 30 giorni)
- Registra il tuo dominio web Laravel e inserisci alcune informazioni. Riceverai una chiave API.
- Carica e collega lo script di traduzione Linguise alla cartella Laravel che hai.
- Imposta gli URL della lingua nel file htaccess.
- Inserisci lo script per il cambio di lingua nell'intestazione del tuo codice HTML.
- Personalizza il selettore di lingua secondo necessità
- Il cambio di lingua apparirà sul web Laravel e il contenuto potrà essere tradotto automaticamente.
Come? Con Linguise , devi solo registrarti e attivarti e apparirà il cambio di lingua. Dopodiché sei libero di localizzare, ad esempio, tramite l'editor live, tradurre media, immagini, ecc.
Conclusione
La localizzazione Laravel è una potente funzionalità che consente agli sviluppatori di creare siti Web e applicazioni multilingue. Come abbiamo visto, il processo di localizzazione integrato in Laravel prevede più passaggi e richiede una buona comprensione del framework. Può essere difficile per i principianti o per coloro che cercano una soluzione più rapida.
Strumenti come Linguise forniscono un'alternativa innovativa per coloro che cercano un approccio più snello. Queste soluzioni offrono funzionalità di traduzione rapida, facile integrazione e funzionalità intuitive come selettori di lingua personalizzabili e traduzione di immagini. Ora crea il tuo account Linguise e goditi la nostra funzionalità per localizzare il tuo Laravel !