Cambio lingua
Come configurare e passare da una lingua all’altra nella tua app Next.js
La funzione di cambio lingua consente agli utenti di impostare la lingua/locale preferita per i contenuti della tua applicazione. GT Next offre diversi approcci, dal semplice cambio via codice al routing completo basato su URL con middleware.
Metodi disponibili
- Programmatico: hook
useSetLocaleper controlli personalizzati - UI predefinita: componente
<LocaleSelector>con menu a tendina - UI personalizzata: hook
useLocaleSelectorper creare selettori personalizzati - Basato su URL: instradamento tramite middleware per la lingua nei percorsi URL
Uso dell’hook useSetLocale
L’hook useSetLocale è un hook client-side che consente di cambiare la lingua della tua app:
import { useSetLocale } from 'gt-next/client';
export default function MyComponent() {
const setLocale = useSetLocale();
return <button onClick={() => setLocale('en')}>Imposta lingua</button>;
}È sufficiente passare la locale desiderata come argomento alla funzione restituita dall’hook.
Utilizzo del componente <LocaleSelector>
Il componente <LocaleSelector> fornisce un menu a discesa pronto all’uso che mostra automaticamente tutte le lingue/locale configurate:
import { LocaleSelector } from 'gt-next/client';
export default function MyComponent() {
return <LocaleSelector />;
}Questo componente:
- Mostra tutte le lingue/locale configurate per il tuo progetto
- Visualizza le lingue/locale con i loro nomi nella lingua originale
- Gestisce la logica di cambio lingua
- Mantiene lo stato della selezione attuale
Uso dell’hook useLocaleSelector
Se vuoi creare un componente personalizzato per la selezione della lingua/locale, usa useLocaleSelector:
import { useLocaleSelector } from 'gt-next/client';
function CustomLocaleSelector() {
const {
locale, // Impostazione locale attiva (es. 'en', 'es')
locales, // Elenco delle impostazioni locali supportate dal progetto ['en', 'es', 'fr']
setLocale, // Funzione per cambiare l'impostazione locale: setLocale('es')
getLocaleProperties // Funzione per ottenere le informazioni di visualizzazione per un'impostazione locale
} = useLocaleSelector();
if (!locales?.length) return null;
return (
<select
value={locale || ''}
onChange={(e) => setLocale(e.target.value)}
>
{locales.map((loc) => {
const props = getLocaleProperties(loc);
return (
<option key={loc} value={loc}>
{props.nativeNameWithRegionCode} {/* es. "English (US)", "Español (ES)" */}
</option>
);
})}
</select>
);
}Cambio lingua basato sull’URL
Per la SEO e una migliore UX, puoi includere il locale negli URL utilizzando il routing middleware. Trovi più informazioni su questo approccio nella Guida al middleware:
/en/products → Pagina prodotti in inglese
/es/products → Pagina prodotti in spagnolo
/fr/products → Pagina prodotti in franceseQuesto approccio offre vantaggi SEO, collegamenti diretti alle versioni linguistiche e link localizzati facilmente condivisibili.
Avvertenze importanti
Solo Client Components
Tutti gli hook e i componenti per il cambio della lingua devono essere usati nei Client Components contrassegnati con 'use client':
'use client';
import { useSetLocale } from 'gt-next/client';
function LanguageSwitcher() {
const setLocale = useSetLocale();
// ... logica del componente
}Requisito per GTProvider
I componenti per la modifica della lingua devono essere utilizzati all'interno di <GTProvider>:
// ✅ Corretto
<GTProvider>
<LanguageSwitcher />
</GTProvider>
// ❌ Errato - al di fuori del provider
<LanguageSwitcher />Prossimi passi
- Guida al middleware - instradamento della lingua basato sull’URL
- Guida ai contenuti dinamici - traduzione dei contenuti a runtime
- Riferimenti API:
- Hook
useSetLocale - Componente
<LocaleSelector>
- Hook
Come valuti questa guida?