Laravel è uno strumento potente che consente agli sviluppatori di creare siti web multilingue. Implementando la localizzazione web nei tuoi progetti Laravel , puoi offrire un'esperienza utente personalizzata ai visitatori di diverse origini linguistiche, ampliando così la tua portata e migliorando il coinvolgimento degli utenti.
Ti guideremo nell'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 un sito web Laravel ?

Ecco alcune ragioni importanti per cui dovresti localizzare il tuo sito web Laravel .
- Raggiungi un pubblico globale: Localizzando il tuo sito 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 utente: La localizzazione consente agli utenti di interagire con l'app nella loro lingua madre, il che migliora significativamente l'esperienza utente. Questo può aumentare i tassi di coinvolgimento, ridurre le frequenze di rimbalzo e aumentare le conversioni.
- Vantaggio competitivo: In un mercato globale competitivo, offrire app in più lingue può fornire un vantaggio significativo rispetto ai concorrenti. Dimostra il tuo impegno verso i mercati internazionali e può aiutarti a entrare in nuovi mercati in modo più efficace.
- Migliora la SEO: I siti web ben localizzati tendono a posizionarsi meglio nei motori di ricerca per le ricerche in una determinata lingua. Questo può aumentare il traffico del tuo blog e la visibilità online in vari mercati con la traduzione multilingue.
Requisiti per una localizzazione multilingue di Laravel

Per implementare la localizzazione multilingue in Laravel, è necessario tenere in considerazione alcuni requisiti e passaggi.
- Per ottenere le funzionalità di localizzazione più recenti, assicurati di utilizzare l'ultima versione di Laravel (ad esempio, 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 in 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. Poi, sostituisci il tag body con il seguente codice.
Welcome to Linguise website!
Come puoi vedere, il testo sopra è attualmente scritto direttamente nel codice. Questo è meno efficiente e rende difficile tradurre siti web in diverse lingue (internazionalizzazione).
Renderemo il testo sopra più flessibile, in modo che possa essere facilmente adattato a lingue diverse. Laravel offre una funzionalità molto utile a questo scopo: il sistema di localizzazione. Come primo passo, sostituisci il testo esistente con il seguente codice.
{{ __('Welcome to Linguise website!') }}
Laravel visualizzerà il testo sopra riportato 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 lingue in un sito 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 seguenti due chiavi.
/*
|--------------------------------------------------------------------------
| 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 le chiavi dovrebbe essere chiara. In sintesi, la chiave locale contiene la lingua predefinita per la tua applicazione (se nessun'altra lingua è specificata nel codice). Il fallback_locale viene attivato se nella tua applicazione viene richiesta una lingua inesistente.
Ora, aggiungiamo una nuova chiave a questo file per fornire un elenco di tutte le lingue 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 per supportare tre lingue, ovvero inglese, italiano e francese.
Panoramica dei file di traduzione di Laravel

In Laravel, come in molti altri framework, le traduzioni per le diverse lingue sono memorizzate in file separati. Per organizzare questi file di traduzione vengono utilizzati due metodi.
Il metodo più vecchio archivia 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, anche se i principi sono simili per il metodo più vecchio, a parte le differenze nel modo in cui le chiavi di traduzione vengono nominate e accessibili.
Per le lingue con varianti regionali, è consigliabile denominare le directory o i file della lingua secondo lo standard ISO 15897. Ad esempio, l'inglese britannico dovrebbe essere denominato en_GB invece di en-gb.
informazioni generali
In Laravel, come in molti framework, le traduzioni per le diverse lingue sono archiviate in file separati. Esistono due metodi principali per organizzare i file di traduzione di Laravel .
- L'approccio legacy prevede l'archiviazione dei file nel percorso: resources/lang/{en,fr,it}/{myfile.php}.
- L'approccio moderno utilizza i file resources/lang/{fr.json, it.json}.
Questo articolo si concentrerà sul secondo metodo, anche se i principi sono 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 delle lingue secondo gli standard ISO 15897. Ad esempio, l'inglese britannico sarebbe indicato come en_GB anziché en-gb.
Creazione dei file di traduzione Laravel
Dopo aver configurato le lingue per la nostra applicazione, possiamo procedere a tradurre il 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 ({{ __(‘Benvenuto nel sito Linguise !’) }}). Non è necessario creare un file en.json, poiché Laravel riconosce automaticamente che i messaggi predefiniti sono in inglese.
Impostare il selettore di lingua in un'applicazione multilingue Laravel

Inoltre, Laravel non è ancora configurato per sovrascrivere la lingua locale, quindi per ora gestiremo la traduzione direttamente all'interno della route. Modifica la route di benvenuto predefinita 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 catturando un parametro GET locale opzionale e impostando la lingua corrente in base ad esso (se la lingua richiesta è supportata).
Ora puoi visitare il tuo sito web e includere una delle lingue supportate come primo segmento nell'URL. Ad esempio, navigando su localhost/it o localhost/fr verrà visualizzato il contenuto localizzato. Se non specifichi una lingua o ne scegli una non supportata, Laravel utilizzerà l'inglese (en) come impostazione predefinita.
Middleware di localizzazione per Laravel
Includere la locale in ogni URL potrebbe non essere l'ideale e potrebbe compromettere l'aspetto visivo del sito. Per risolvere questo problema, configureremo un selettore di lingua e utilizzeremo la sessione utente per visualizzare il contenuto tradotto. Puoi creare un nuovo middleware nel file app/Http/Middleware/Localization.php, oppure generarlo eseguendo il comando artisan make:middleware Localization.
Poi, aggiungi il seguente codice all'interno.
Questo middleware indicherà ad Laravel di utilizzare la posizione selezionata dall'utente se questa opzione è presente nella sessione.
Poiché abbiamo bisogno 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 delle route
Successivamente, definisci una route per cambiare la lingua nel file routes/web.php. Qui stiamo usando una route con closure, ma puoi inserire lo stesso codice all'interno di un controller se preferisci.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Inoltre, rimuovi il cambio di locale che era stato precedentemente aggiunto alla route di benvenuto predefinita. La tua route principale dovrebbe ora apparire così.
Route::get('/', function () {
return view('welcome');
});
Una volta fatto ciò, l'utente può cambiare la lingua attiva solo visitando localhost/language/{locale}. La lingua selezionata verrà salvata nella sessione e gli utenti verranno reindirizzati alla pagina precedente (come gestito dal middleware di localizzazione).
Per testarlo, vai su localhost/language/it (supponendo 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 selettore di lingua
Ora, dobbiamo fornire all'utente un'opzione cliccabile per cambiare lo language switcher Laravel web invece di richiedere loro di inserire manualmente i codici di localizzazione nell'URL. Per ottenere ciò, crea un semplice language switcher. Aggiungi un nuovo file in resources/views/partials/language_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 nuovo selettore di lingua appena creato nella vista “welcome”, aggiungi semplicemente la seguente riga al tuo file welcome.blade.php nel punto in cui desideri che il selettore venga visualizzato.
@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 viste 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 di localizzazione, ovvero data, numero e valuta. Ecco i passaggi.
Date localizzate in Laravel
La gestione di date e orari è cruciale nel processo di localizzazione. Laravel utilizza Carbon per gestire date e orari. Ecco come puoi usare 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 le impostazioni locali di Carbon in base alle impostazioni locali correnti 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. Per esempio.
- Francia → 123 123,12
- Germania → 123.123,12
- Giappone → 123.123
Per adattarti a queste variazioni nella tua applicazione Laravel , puoi utilizzare NumberFormatter.
Puoi anche scrivere i numeri per esteso in una lingua specifica.
Ecco le valute. Per la localizzazione francese (`fr`), la valuta sarà visualizzata in euro (€), mentre per la localizzazione statunitense (`en_US`), sarà mostrata in dollari statunitensi ($).
Soluzione alternativa per la localizzazione Laravel con Linguise

Dopo aver compreso i passaggi della localizzazione di Laravel come descritto nell'articolo, questo processo comporta molte fasi che richiedono agli utenti di comprendere a fondo il codice del programma Laravel .
Questo può certamente rendere difficile per gli utenti alle prime armi che desiderano localizzare le proprie applicazioni. Pertanto, è necessaria una soluzione più innovativa in grado di tradurre rapidamente, supportare la localizzazione e richiedere solo pochi semplici passaggi per l'implementazione.
Una soluzione promettente è Linguise. Linguise offre un approccio più semplice ed efficiente alla localizzazione di Laravel senza la necessità di conoscenze approfondite di programmazione. Le caratteristiche principali di Linguise includono.
- Integrazione facile con Laravel
- Personalizza il selettore di lingua senza codice
- Traduzione delle immagini
- Editor live per personalizzare le traduzioni in base al contesto locale
- Traduzione dinamica per contenuti generati dinamicamente
- Ottimizzazione SEO per versioni multilingua
Anche i passaggi per installare Linguise su siti web Laravel possono essere eseguiti facilmente. Ecco una breve spiegazione.
- Crea un account Linguise (usa la prova gratuita di 30 giorni)
- Registra il tuo dominio web Laravel e inserisci alcune informazioni. Otterrai una chiave API.
- Carica e collega lo script di traduzione Linguise alla cartella Laravel che hai ottenuto.
- Configura gli URL delle lingue nel file .htaccess.
- Inserisci lo script del selettore di lingua nell'head del tuo HTML.
- Personalizza il selettore della lingua secondo necessità
- Il selettore di lingua apparirà sul sito Laravel e il contenuto potrà essere tradotto automaticamente.
Come? Con Linguise, basta registrarsi e attivare l'app, e apparirà il selettore della lingua. Dopodiché, potrai localizzare liberamente i tuoi contenuti, ad esempio tramite l'editor in tempo reale, tradurre file multimediali, immagini e così via.
Conclusion
La localizzazione di Laravel è una funzionalità potente che consente agli sviluppatori di creare siti web e applicazioni multilingue. Come abbiamo visto, il processo di localizzazione integrato di Laravel comporta più passaggi e richiede una buona comprensione del framework. Può essere difficile per i principianti o per chi cerca una soluzione più rapida.
Strumenti come Linguise offrono un'alternativa innovativa per chi cerca un approccio più snello. Queste soluzioni offrono capacità di traduzione rapida, integrazione semplice e funzionalità intuitive come selettori di lingua personalizzabili e traduzione delle immagini. Ora, crea il tuo account Linguise e approfitta della nostra funzionalità per localizzare il tuo Laravel!



