Skip to content

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:

php
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.jsone en.json

Successivamente sarà necessario definire le chiavi con il loro valore, es:

json
{
    "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:

php
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