Skip to main content

Cos’è la localizzazione

La localizzazione di Laravel offre un meccanismo comodo per ottenere stringhe tradotte in più lingue. La usi per supportare più lingue nella tua applicazione. Ci sono due modi per gestire le stringhe di traduzione.
Le applicazioni Laravel predefinite non includono la directory lang. Per personalizzare pubblicala con lang:publish.

Impostazione della locale

Locale predefinita

La lingua predefinita si imposta in locale di config/app.php. Di norma usi la variabile d’ambiente APP_LOCALE in .env.
fallback_locale è la lingua di fallback quando la stringa non esiste nella lingua richiesta.

Cambio di locale a runtime

Con il metodo setLocale() della facade App cambi la locale per una singola richiesta.

Verificare la locale corrente

Creazione dei file di traduzione

Formato file PHP

Crea file PHP nella directory lang/{codice}/. Restituiscono un array associativo chiave-valore.
Per le lingue con varianti regionali usa i codici ISO 15897. Ad esempio inglese britannico è en_GB, non en-gb.

Formato JSON

Con molte stringhe da tradurre è consigliato il JSON. Crea file JSON con il nome della lingua in lang/.
Le stringhe predefinite (di norma in inglese) diventano le chiavi.
Nel formato JSON, il testo inglese è la chiave: la visualizzazione predefinita in inglese funziona automaticamente. Nelle lingue senza file di traduzione viene mostrata la chiave stessa (l’originale).

Quando usare PHP o JSON

  • Quando vuoi organizzare per funzionalità (es. messaggi di validazione)
  • Quando sovrascrivi traduzioni integrate di Laravel (validation.php, auth.php, ecc.)
  • Quando serve una gestione gerarchica delle chiavi
  • Molte stringhe di UI, chiavi laboriose da pensare
  • Vuoi scrivere l’inglese direttamente nei template e tradurre solo le altre lingue
  • Internazionalizzazione aggiunta a posteriori

Recupero delle traduzioni

Helper __()

Il modo più usato. In formato PHP usa nomefile.chiave.
Se la stringa non esiste viene restituita la chiave stessa.

Uso in Blade

Nei template Blade usa {{ __() }}.
La direttiva @lang è deprecata. Oggi si consiglia {{ __() }}.

Placeholder

Puoi inserire nei testi tradotti dei placeholder :nome.
Passa un array di sostituzioni come secondo argomento a __().
Anche in Blade:

Plurale

Le regole del plurale variano per lingua. Con | puoi separare singolare e plurale.

Plurale di base

Anche in JSON:
Usa trans_choice() passando la quantità.

Plurale con range

Puoi indicare intervalli.

Placeholder nei plurali

Usa :count per mostrare la quantità. Passa altri valori come terzo argomento.

Sovrascrivere i file di traduzione dei pacchetti

Se un pacchetto di terze parti ha propri file di traduzione, puoi sovrascriverlo posizionando file con lo stesso nome in lang/vendor/{nome-pacchetto}/{codice}/. Ad esempio per personalizzare i messaggi inglesi di skyrim/hearthfire:

Esempio pratico: middleware di switch italiano/inglese

Middleware che imposta la locale in base a sessione, preferenze utente o URL.
1

Crea il middleware

2

Implementa il middleware

3

Registra il middleware

Registralo in bootstrap/app.php.
4

Aggiungi la route di switch

5

Aggiungi i pulsanti nella vista Blade

Esempio di struttura dei file di traduzione

Ultima modifica il 13 luglio 2026

Argomenti correlati

Eloquent Factory