Laravel e la localizzazione

Più il progetto è importante, maggiore è la probabilità che debba sfruttare la localizzazione. Laravel ci regala tutti gli strumenti necessari per una localizzazione semplice ed efficace. Vediamo come impostarla e come effettuare lo switch tra due lingue diverse.

Mettiamo il caso che le lingue siano due. La prima cosa da fare è creare tante cartelle quante sono le lingue. Dove? Nella cartella “resources”. Laravel, di default, include già la cartella “en” con all’interno una serie di file soprattutto legati all’autenticazione o ad altre feature generiche.

Possiamo creare nuovi file o creare un file unico (sconsigliato) e tradurre così tutto ciò che occorre.

Il file per la traduzione (che andrà nelle rispettive cartelle en e it e si chiamerà, ovvio, allo stesso modo) ha la seguente struttura:

Idem nel file presente nella cartella per la lingua inglese:

Per richiamare questi testi all’interno delle nostre view c’è un comodo helper che Laravel mette a disposizione. Eccolo:

Il primo nome homepage è il nome del file, il secondo è la chiave dell’array che vogliamo visualizzare nella view.

Ma come facciamo lo switch tra una lingua e l’altra?

Lo Switch, veloce ed indolore

L’esempio che segue è quello che utilizzo di frequente: collaudato e decisamente “pulito”. Ciò di cui abbiamo bisogno sono due link, uno per l’italiano, l’altro per l’inglese. Ma anche di un Controller che gestisca queste chiamate GET. Nella nostra view per il cambio di lingua andremo a creare due semplici link:

Poi tocca al file di route:

Bene, è il turno del nostro Controller:

Che cosa abbiamo fatto nel controller? Abbiamo creato una sessione e l’abbiamo chiamata “language”, al suo interno c’è il nome della cartella della lingua scelta (it o en). Poi c’è un ritorno alla pagina dalla quale abbiamo cliccato.
Fin qui non accadrà assolutamente nulla perché abbiamo semplicemente impostato la sessione. Adesso vediamo come trarne frutto.

Middleware

Andiamo a creare un middleware che gestisca questo cambio di lingua. Artisan fa al caso nostro.

Nel file creato facciamo questa modifica:

Con l’istruzione “app()->setLocale()” impostiamo il linguaggio prelevato dalla sessione. Laravel, di default, mantiene “en” (vedi file “config/app.php”).
Adesso registriamo il Middleware appena creato. Apriamo il file Kernel:

Infine applichiamo al file di route il Middleware appena registrato.

Show your support

Clapping shows how much you appreciated Francesco Lettera’s story.