Salta ai contenuti

Internazionalizzazione (i18n)

FireCMS include un sistema di internazionalizzazione integrato basato su i18next e react-i18next. Di default sono supportate le seguenti lingue:

CodiceLingua
enInglese (predefinito)
esSpagnolo
deTedesco
frFrancese
itItaliano
hiHindi

Tutta la gestione del cambio di lingua, la persistenza tra le sessioni e la ricerca delle stringhe sono gestite automaticamente da FireCMSi18nProvider, che viene montato alla radice dell’albero dei componenti FireCMS.


Avvolgi il tuo albero FireCMS con FireCMSi18nProvider:

import {
FireCMS,
FireCMSi18nProvider,
ModeControllerProvider,
Scaffold, AppBar, Drawer, NavigationRoutes, SideDialogs,
SnackbarProvider,
// … altre importazioni
} from "@firecms/core";
export function MyCMSApp() {
// … configura i controller (auth, navigazione, storage, ecc.)
return (
<SnackbarProvider>
<FireCMSi18nProvider locale="it">
<ModeControllerProvider value={modeController}>
<FireCMS
navigationController={navigationController}
authController={authController}
dataSourceDelegate={firestoreDelegate}
storageSource={storageSource}
>
{({ context, loading }) => {
if (loading) return <CircularProgressCenter size="large" />;
return (
<Scaffold>
<AppBar title="My CMS" />
<Drawer />
<NavigationRoutes />
<SideDialogs />
</Scaffold>
);
}}
</FireCMS>
</ModeControllerProvider>
</FireCMSi18nProvider>
</SnackbarProvider>
);
}

La prop locale accetta qualsiasi tag di lingua BCP-47 ("en", "es", "de", "it", …).

Quando un utente cambia la lingua tramite l’UI di FireCMS, la scelta viene salvata in localStorage sotto la chiave firecms_locale. Alla visita successiva, la preferenza memorizzata ha priorità sulla prop locale — a meno che non la cancelli manualmente.


Puoi sostituire qualsiasi stringa UI di FireCMS senza toccare il codice sorgente della libreria. Usa la prop translations su FireCMSi18nProvider:

import { FireCMSi18nProvider } from "@firecms/core";
import type { FireCMSTranslations } from "@firecms/core";
// Includi solo le chiavi che vuoi cambiare — tutto il resto mantiene il suo valore predefinito.
const myTranslations: { [locale: string]: Partial<FireCMSTranslations> } = {
it: {
save: "Pubblica",
discard: "Annulla",
delete: "Rimuovi",
},
en: {
save: "Publish",
discard: "Throw away",
},
};
// Nel tuo albero componenti:
<FireCMSi18nProvider locale="it" translations={myTranslations}>
{/* … */}
</FireCMSi18nProvider>

Le sovrascritture vengono unite in profondità sulle stringhe integrate — le chiavi che non fornisci mantengono i loro valori predefiniti.


Se la tua lingua di destinazione non è elencata sopra, crea un oggetto che soddisfi DeepPartial<FireCMSTranslations> e passalo sotto un nuovo codice di localizzazione:

import { FireCMSi18nProvider } from "@firecms/core";
const ptTranslations = {
save: "Guardar",
create: "Criar",
discard: "Descartar",
cancel: "Cancelar",
delete: "Eliminar",
edit: "Editar",
copy: "Copiar",
search: "Pesquisar",
filter: "Filtro",
loading: "A carregar...",
// … aggiungi tutte le chiavi di cui hai bisogno; il resto usa l'inglese come fallback
};
<FireCMSi18nProvider
locale="pt" // attiva la nuova localizzazione
translations={{ pt: ptTranslations }} // fornisci le sue stringhe
>
{/* … */}
</FireCMSi18nProvider>

PropTipoPredefinitoDescrizione
localestring"en"Tag di lingua BCP-47 per la lingua attiva.
translationsRecord<string, DeepPartial<FireCMSTranslations>>Sovrascritture/aggiunte di stringhe per localizzazione.

Tutte le stringhe traducibili sono definite nell’interfaccia FireCMSTranslations esportata da @firecms/core.

ChiavePredefinito (en)
saveSave
createCreate
save_and_closeSave and close
create_and_closeCreate and close
create_copyCreate copy
discardDiscard
clearClear
cancelCancel
ChiavePredefinito (en)
editEdit
copyCopy
deleteDelete
delete_selectedDelete
ChiavePredefinito (en)
searchSearch
filterFilter
no_itemsNo items
no_entries_foundNo entries found
create_your_first_entryCreate your first entry
ChiavePredefinito (en)
delete_confirmation_titleDelete?
delete_confirmation_bodyThis will delete the entity. Are you sure?
unsaved_changes_titleUnsaved changes
unsaved_changes_bodyYou have unsaved changes. Do you want to discard them?
ChiavePredefinito (en)
open_menuOpen menu
close_drawerClose drawer
homeHome
adminAdmin
log_outLog out

Per la lista completa delle chiavi con le loro definizioni TypeScript, vedi il file sorgente FireCMSTranslations su GitHub.


Se hai aggiunto una traduzione completa per una nuova lingua e vorresti condividerla con la community, accettiamo pull request!

  1. Aggiungi un nuovo file packages/firecms_core/src/locales/<code>.ts seguendo la struttura dell’en.ts esistente.
  2. Registralo in FireCMSi18nProvider.tsx.
  3. Apri una pull request — grazie! 🎉

Hai domande? Unisciti alla community Discord.