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 inlocale 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 metodosetLocale() 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 directorylang/{codice}/. Restituiscono un array associativo chiave-valore.
Formato JSON
Con molte stringhe da tradurre è consigliato il JSON. Crea file JSON con il nome della lingua inlang/.
Quando usare PHP o JSON
Quando conviene il formato PHP
Quando conviene il formato PHP
- 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
Quando conviene JSON
Quando conviene JSON
- 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.
Uso in Blade
Nei template Blade usa{{ __() }}.
Placeholder
Puoi inserire nei testi tradotti dei placeholder:nome.
__().
Plurale
Le regole del plurale variano per lingua. Con| puoi separare singolare e plurale.
Plurale di base
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 inlang/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
Riepilogo
Come definire le traduzioni
Come definire le traduzioni
Funzioni e facade utili
Funzioni e facade utili
Uso in Blade
Uso in Blade