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:

Codice Lingua
en Inglese (predefinito)
es Spagnolo
de Tedesco
fr Francese
it Italiano
hi Hindi

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>

Prop Tipo Predefinito Descrizione
locale string "en" Tag di lingua BCP-47 per la lingua attiva.
translations Record<string, DeepPartial<FireCMSTranslations>> Sovrascritture/aggiunte di stringhe per localizzazione.

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

Chiave Predefinito (en)
save Save
create Create
save_and_close Save and close
create_and_close Create and close
create_copy Create copy
discard Discard
clear Clear
cancel Cancel
Chiave Predefinito (en)
edit Edit
copy Copy
delete Delete
delete_selected Delete
Chiave Predefinito (en)
search Search
filter Filter
no_items No items
no_entries_found No entries found
create_your_first_entry Create your first entry
Chiave Predefinito (en)
delete_confirmation_title Delete?
delete_confirmation_body This will delete the entity. Are you sure?
unsaved_changes_title Unsaved changes
unsaved_changes_body You have unsaved changes. Do you want to discard them?
Chiave Predefinito (en)
open_menu Open menu
close_drawer Close drawer
home Home
admin Admin
log_out Log 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.