Localizzazione
La cartella resources/lang
contiene le stringhe localizzate utili all'internazionalizzazione delle applicazioni Web. All'interno di questa cartella sono presenti diverse sotto cartelle, ognuna per ogni linguaggio supportato. Dentro ciascuna di queste cartelle sarà nostro compito creare diversi file, che fungono da raccolte logiche di etichette localizzate. Ciascuno di questi file si occuperà di definire un hash chiave/valore.
Di default Laravel inizializza una applicazione con una serie di file dedicati alla lingua inglese: en
.
Il linguaggio di default di una applicazione è definito in config/app.php
ma ovviamente può essere modificato tramite il metodo setLocale
della facade App. Sempre dentro app.php
è possibile configurare un linguaggio di fallback, utilizzato nel caso manchi qualche etichetta del linguaggio corrente.
Per poter utilizzare le etichette localizzate all'interno dei componenti software, il framework mette a disposizione un helper: trans
. Il metodo riceve in ingresso una stringa che identifica sia il contesto sia il nome della label da stampare. Per esempio la dicitura:
{{ trans('auth.failed') }}
stamperà il valore dell'etichetta failed
all'interno del file auth.php
.
L'helper può ricevere anche un ulteriore parametro, una mappa di valori da sostituire nella stringa corrente. Supponendo di avere una label del tipo:
'required' => 'The :attribute field is required.'
sarà possibile scrivere
{{ trans('validation.required', [ 'attribute' => 'username ]) }}
per avere un messaggio personalizzato in base all'attributo corrente.
Pluralizzazione
Un ulteriore feature del componente dedicato alle localizzazioni è la pluralizzazione. Tutte le lingue del mondo presentano regole differenti per creare le versioni plurali dei sostantivi e per questo non è sempre possibile automatizzare questo processo. Con un particolare sintassi e un metodo ad hoc, è possibile configurare Laravel impostando diverse frasi in base al numero di elementi. Facciamo un esempio:
'utenti' => '{0}Sei l'unico utente|{1,3} Siete in quattro gatti|{4,10} Un bel gruppetto|{11, Inf}Troppo casino'
{{ trans_choice('frontend.utenti', 10) }}
In questo caso, grazie a trans_choice
e al secondo parametro passato, possiamo ottenere un messaggio personalizzato anche in base alla quantità definita; nel nostro caso il numero 10 permette di ottenere la stringa "Un bel gruppetto".