i18n
Configurazione
Al boot dell'applicazione (vedi app/bootstap/app.php
), dopo l'installazione del framework verrà sempre chiamato il middleware App\Http\Middleware\Localization
, che al suo interno contiene il codice:
class Localization
{
public function handle(Request $request, Closure $next): Response
{
if (app()->environment('testing')) {
$locale = 'it';
} else {
$locale = \Str::of($request->header('Accept-Language') ?? 'it')->substr(0, 2)->lower()->toString();
if (LanguagesEnum::tryFrom($locale) === null) {
$locale = 'en';
}
}
\App::setLocale($locale);
return $next($request);
}
}
E' possibile modificarlo a proprio piacimento
❗Importante❗
Se si vuole aggiungere una lingua è necessario modificare il file App\Enums\LanguagesEnum
Utilizzo
Per utilizzare la localizzazione, è necessario creare un file .json
preceduto dal formato alpha-2
della lingua per la quale si ha l'intenzione di tradurre le stringhe (es. it.json
) all'interno della cartella app/resources/lang
N.B. Come default di sistema, esistono i file
it.json
een.json
Successivamente sarà necessario definire le chiavi con il loro valore, es:
{
"users.dt.full_name": "Nome",
"users.dt.status": "Stato",
"users.enums.status.active.label": "Attivo",
"equipment.errors.already_assigned": "L'attrezzatura :equipment è già stata assegnata"
}
Dovunque ci sia bisogno di recuperare una stringa tradotta, sarà necessario utilizzare il metodo __()
, es:
abort_if($equipment->isAssigned(now()), 400, __('equipment.errors.already_assigned', ['equipment' => $equipment->name]))
L'array chiave valore passato come secondo parametro nel metodo __()
, verrà usato per fare il replace con qualsiasi chiave esistente (preceduta da :
) nel JSON