Laravel la localizzazione è un potente che consente agli sviluppatori di creare siti web multilingue. Implementando localizzazione web nei tuoi progetti Laravel, puoi fornire un'esperienza utente personalizzata per i visitatori provenienti da diversi contesti linguistici, ampliando in ultima analisi la tua portata e migliorando il coinvolgimento degli utenti.
Ti guideremo attraverso l'implementazione della localizzazione nella tua applicazione Laravel e ti presenteremo uno strumento che può semplificare e migliorare i tuoi sforzi di localizzazione!
Perché dovresti localizzare il sito web Laravel ?

Ecco alcuni motivi importanti per cui dovresti localizzare il tuo sito web Laravel .
- Raggiungi un pubblico globale: Localizzando il tuo sito web Laravel, puoi estendere la portata della tua app a un pubblico internazionale. Ciò consente agli utenti di diversi paesi e background linguistici di comprendere e interagire con i tuoi contenuti.
- Migliora l'esperienza utente:
- Vantaggio competitivo: In un mercato globale competitivo, offrire app in più lingue può fornire un vantaggio significativo rispetto ai concorrenti. Dimostra il tuo impegno nei mercati internazionali e può aiutarti a entrare in nuovi mercati in modo più efficace.
- Migliora la SEO: I siti web ben localizzati tendono a posizionarsi meglio nei motori di ricerca per ricerche in una particolare lingua. Ciò può aumentare il traffico del tuo blog e la visibilità online in vari mercati con traduzione multilingue.
Requisiti per una localizzazione Laravel multilingue

Ci sono alcuni requisiti e passaggi da considerare quando si implementa la localizzazione multilingue in Laravel.
- Per ottenere le ultime funzionalità di localizzazione, assicurati di utilizzare l'ultima versione di Laravel (ad esempio, versione 10.x).
- Una conoscenza di base di PHP e del framework Laravel sarà utile nel processo di implementazione.
- Configura un ambiente di sviluppo locale o un server che supporta Laravel, incluso un server web e un database.
- Determina le lingue che la tua applicazione supporterà fin dall'inizio.
Traduzioni semplici di Laravel

Dopo aver compreso quali requisiti devono essere soddisfatti prima di tradurre un'applicazione o un sito web Laravel , forniremo alcuni passaggi per tradurre Laravel in modo semplice.
Per farlo, apri il file di vista che desideri localizzare, ad esempio, resources/views/welcome.blade.php. Quindi, sostituisci il tag body con il seguente codice.
Welcome to Linguise website!
Come puoi vedere, il testo sopra è attualmente scritto direttamente nel codice. Ciò è meno efficiente e rende difficile tradurre siti web in diverse lingue (internazionalizzazione).
Stiamo per rendere il testo sopra più flessibile in modo che possa essere facilmente adattato a diverse lingue. Laravel fornisce una funzionalità molto utile per questo; il sistema di localizzazione. Come primo passo, sostituisci il testo esistente con il seguente codice.
{{ __('Welcome to Linguise website!') }}
Laravel visualizzerà il testo sopra per impostazione predefinita e cercherà la traduzione se l'utente seleziona una lingua diversa dall'inglese. In questo caso, l'inglese verrà utilizzato come lingua predefinita dell'applicazione.
Configurazione delle impostazioni locali in un sito web multilingue Laravel

Ma come fa Laravel a determinare la lingua corrente o a sapere quali lingue sono disponibili nell'applicazione? Controlla le impostazioni di localizzazione nel file config/app.php. Apri questo file e cerca le due chiavi seguenti.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
La spiegazione sopra le chiavi dovrebbe essere chiara. In sintesi, la chiave della locale contiene la locale predefinita per la tua applicazione (se non è specificata un'altra locale nel codice). La fallback_locale viene attivata se viene richiesta una locale non esistente nella tua applicazione.
Ora, aggiungiamo una nuova chiave a questo file per fornire un elenco di tutte le lingue supportate.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
A questo punto, abbiamo provato il web Laravel per supportare tre lingue, vale a dire inglese, italiano e francese.
Laravel panoramica dei file di traduzione

In Laravel, come in molti altri framework, le traduzioni per lingue diverse sono archiviate in file separati. Vengono utilizzati due metodi per organizzare questi file di traduzione.
Il metodo più vecchio memorizza i file nella seguente struttura: resources/lang/{en,fr,it}/{myfile.php}. Il metodo più nuovo utilizza file JSON, come resources/lang/{fr.json, it.json}. Questo articolo si concentrerà sul metodo più nuovo, sebbene i principi siano simili per il metodo più vecchio, a parte le differenze nel modo in cui le chiavi di traduzione sono denominate e accessibili.
Per le lingue con variazioni regionali, è necessario denominare le directory o i file delle lingue in base allo standard ISO 15897. Ad esempio, l'inglese britannico sarebbe denominato en_GB anziché en-gb.
Informazioni generali
In Laravel, come con molti framework, le traduzioni per diverse lingue sono archiviate in file separati. Ci sono due metodi principali per organizzare i file di traduzione di Laravel .
- L'approccio legacy prevede la memorizzazione dei file sotto il percorso: resources/lang/{en,fr,it}/{myfile.php}.
- L'approccio moderno utilizza i file resources/lang/{fr.json, it.json}.
Questo articolo si concentrerà sul secondo metodo, sebbene i principi siano applicabili a entrambi (con variazioni su come le chiavi di traduzione sono denominate e accessibili).
Per le lingue che variano a seconda della regione, si consiglia di nominare le directory/file di lingua secondo gli standard ISO 15897. Ad esempio, l'inglese britannico sarebbe indicato come en_GB anziché en-gb.
Creazione di file di traduzione Laravel
Avendo configurato le impostazioni locali per la nostra applicazione, possiamo procedere alla traduzione del nostro messaggio di benvenuto predefinito.
Iniziamo creando nuovi file di localizzazione in formato JSON all'interno della directory resources/lang. Per prima cosa, creeremo un file resources/lang/it.json e lo popoleremo con le traduzioni appropriate.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Successivamente, aggiungi un file resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Come puoi osservare, stiamo facendo costantemente riferimento al messaggio predefinito dal file welcome.blade.php ({{ __(‘Benvenuto nel sito web di Linguise !’)}). Non c'è bisogno di creare un file en.json, poiché Laravel riconosce automaticamente che i messaggi predefiniti sono in inglese.
Impostazione del selettore di lingua in un'app multilingue Laravel

Inoltre, Laravel non è ancora configurato per sovrascrivere la lingua locale, quindi per ora gestiremmo la traduzione direttamente all'interno del percorso. Modifica il percorso di benvenuto predefinito all'interno del file routes/web.php come segue.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
In questo caso, stiamo catturando un parametro GET di localizzazione opzionale e impostando la localizzazione corrente in base ad esso (se la localizzazione richiesta è supportata).
Ora, puoi visitare il tuo sito web e includere una delle lingue supportate come primo segmento nell'URL. Ad esempio, navigando su localhost/it o localhost/fr verrà visualizzato il contenuto localizzato. Se non specifichi una localizzazione o ne scegli una non supportata, Laravel verrà impostato predefinito sull'inglese (en).
Middleware di localizzazione per Laravel
Includere la localizzazione in ogni URL potrebbe non essere l'ideale e potrebbe compromettere l'aspetto visivo del sito. Per risolvere questo problema, configureremo un selettore di lingua e utilizzeremo la sessione utente per visualizzare il contenuto tradotto. È possibile creare un nuovo middleware nel file app/Http/Middleware/Localization.php o generarlo eseguendo il comando artisan make:middleware Localization.
Quindi, aggiungi il seguente codice all'interno.
Questo middleware indirizzerà Laravel a utilizzare la posizione selezionata dall'utente se questa opzione è presente nella sessione.
Poiché abbiamo bisogno che l'operazione venga eseguita ad ogni richiesta, aggiungila alla pila di middleware predefinita in app/Http/Kernel.php per il gruppo di middleware web.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
Modifica delle rotte
Successivamente, definisci un percorso per cambiare la locale nel file routes/web.php. Stiamo utilizzando un percorso di chiusura qui, ma puoi inserire lo stesso codice all'interno di un controller se preferisci.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Inoltre, rimuovere il cambio di lingua che era stato precedentemente aggiunto al percorso di benvenuto predefinito. Il percorso principale dovrebbe ora apparire così.
Route::get('/', function () {
return view('welcome');
});
Una volta fatto ciò, l'utente può solo commutare la lingua attiva visitando localhost/language/{locale}. La localizzazione selezionata verrà salvata nella sessione e gli utenti verranno reindirizzati alla loro pagina precedente (gestita dal middleware Localization).
Per testarlo, vai su localhost/language/it (supponendo che il cookie di sessione sia attivo nel tuo browser), e dovresti vedere il contenuto tradotto. Puoi navigare nel sito o aggiornare la pagina e la lingua scelta rimarrà in vigore.
Implementazione dello switcher di lingua
Ora, dobbiamo fornire all'utente un'opzione cliccabile per cambiare lo selettore di lingua Laravel web anziché richiedere loro di inserire manualmente i codici di localizzazione nell'URL. Per raggiungere questo obiettivo, crea un semplice selettore di lingua. Aggiungi un nuovo file in resources/views/partials/language_switcher.blade.php e inserisci il seguente codice.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Per includere il selettore di lingua appena creato nella vista “welcome”, aggiungi semplicemente la seguente riga al tuo file welcome.blade.php dove desideri che il selettore appaia.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Apri il file app/Providers/AppServiceProvider.php e aggiungi il seguente codice nel metodo boot() per condividere la locale corrente con tutte le viste quando viene utilizzato lo switcher di lingua
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Funzionalità avanzate di traduzione in Laravel PHP

In questa discussione, tratteremo altri componenti di localizzazione, vale a dire data, numero e valuta. Ecco i passaggi.
Date localizzate in Laravel
La gestione di date e orari è cruciale nel processo di localizzazione. Laravel utilizza Carbon per gestire date e orari. Ecco come puoi utilizzare Carbon per visualizzare una data localizzata.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
Questo codice imposta la locale di Carbon in base alla locale corrente dell'applicazione e formatta la data di conseguenza.
Per visualizzare la data localizzata in una vista:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
Formattazione di numeri e valute
Diversi paesi hanno vari modi di formattare i numeri. Ad esempio.
- Francia → 123 123,12
- Germania → 123.123,12
- Giappone → 123,123
Per adattare queste variazioni nella tua applicazione Laravel , puoi utilizzare NumberFormatter.
Puoi anche esprimere i numeri in una lingua specifica.
Ecco le valute. Per la locale francese (`fr`), la valuta sarà visualizzata in euro (€), mentre per la locale statunitense (`en_US`), sarà visualizzata in dollari statunitensi ($).
Soluzione alternativa per la localizzazione di Laravel con Linguise

Dopo aver compreso i passaggi della localizzazione di Laravel come descritti nell'articolo, questo processo comporta molti passaggi che richiedono agli utenti di comprendere in profondità il codice del programma Laravel .
Ciò può certamente rendere difficile per gli utenti alle prime armi che desiderano localizzare le loro applicazioni. Pertanto, è necessaria una soluzione più innovativa in grado di tradurre rapidamente, supportare la localizzazione e richiedere solo pochi semplici passaggi per implementare.
Una soluzione promettente è Linguise. Linguise offre un approccio più facile ed efficiente alla localizzazione di Laravel senza la necessità di conoscenze di programmazione approfondite. Le caratteristiche chiave di Linguise includono.
- Facile integrazione con Laravel
- Personalizza il selettore di lingua senza codice
- Traduzione di immagini
- Editor live per personalizzare le traduzioni nel contesto locale
- Traduzione dinamica per contenuti generati dinamicamente
- Ottimizzazione SEO per versioni multilingue
I passaggi per installare Linguise su siti web Laravel possono essere eseguiti anche facilmente. Ecco una breve spiegazione.
- Crea un account Linguise (utilizza la prova gratuita di 30 giorni per gratuità)
- Registra il tuo dominio web Laravel e inserisci alcune informazioni. Otterrai una chiave API.
- Carica e collega lo script di traduzione Linguise alla cartella Laravel che hai ottenuto.
- Configura gli URL delle lingue nel file htaccess.
- Inserisci lo script del selettore di lingua nella sezione head del tuo HTML.
- Personalizza il selettore di lingua secondo le tue esigenze
- L'interruttore di lingua apparirà sul web Laravel e il contenuto potrà essere tradotto automaticamente.
Come? Con Linguise, devi solo registrarti e attivare, e il selettore di lingua apparirà. Dopodiché, sei libero di localizzare, ad esempio, tramite l'editor live, tradurre media, immagini, ecc.
Conclusione
La localizzazione di Laravel è una caratteristica potente che consente agli sviluppatori di creare siti web e applicazioni multilingue. Come abbiamo visto, il processo di localizzazione di Laravel integrato prevede più passaggi e richiede una buona comprensione del framework. Può essere difficile per i principianti o coloro che cercano una soluzione più rapida.
Strumenti come Linguise offrono un'alternativa innovativa per coloro che cercano un approccio più snello. Queste soluzioni offrono capacità di traduzione rapida, facile integrazione e funzionalità user-friendly come interruttori di lingua personalizzabili e traduzione di immagini. Ora, crea il tuo Linguise account e goditi la nostra funzione per localizzare il tuo Laravel



