Aller au contenu

Internationalisation (i18n)

FireCMS est livré avec un système d’internationalisation intégré alimenté par i18next et react-i18next. Les langues suivantes sont prises en charge nativement :

CodeLangue
enAnglais (par défaut)
esEspagnol
deAllemand
frFrançais
itItalien
hiHindi

Toute la gestion du changement de langue, de la persistance entre les sessions et de la recherche de chaînes est gérée automatiquement par FireCMSi18nProvider, que vous montez à la racine de votre arborescence de composants FireCMS.


Enveloppez votre arborescence FireCMS avec FireCMSi18nProvider. Vous pouvez voir un exemple de câblage complet dans la page Sample PRO Project — l’extrait ci-dessous se concentre uniquement sur la partie i18n :

import {
FireCMS,
FireCMSi18nProvider,
ModeControllerProvider,
Scaffold, AppBar, Drawer, NavigationRoutes, SideDialogs,
SnackbarProvider,
// … autres imports
} from "@firecms/core";
export function MyCMSApp() {
// … configurer les contrôleurs (auth, navigation, stockage, etc.)
return (
<SnackbarProvider>
<FireCMSi18nProvider locale="fr">
<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 accepte n’importe quelle balise de langue BCP-47 ("en", "es", "fr", …).

Quand un utilisateur change la langue via l’interface FireCMS, le choix est sauvegardé dans localStorage sous la clé firecms_locale. Lors de la prochaine visite, la préférence stockée a la priorité sur la prop locale — sauf si vous la supprimez manuellement.


Vous pouvez remplacer n’importe quelle chaîne de l’interface FireCMS sans toucher au code source de la bibliothèque. Utilisez la prop translations sur FireCMSi18nProvider :

import { FireCMSi18nProvider } from "@firecms/core";
import type { FireCMSTranslations } from "@firecms/core";
// N'incluez que les clés que vous souhaitez changer — tout le reste garde sa valeur par défaut.
const myTranslations: { [locale: string]: Partial<FireCMSTranslations> } = {
en: {
save: "Publish",
discard: "Throw away",
delete: "Remove",
},
fr: {
save: "Publier",
discard: "Rejeter",
delete: "Supprimer",
},
};
// Dans votre arborescence de composants :
<FireCMSi18nProvider locale="fr" translations={myTranslations}>
{/* … */}
</FireCMSi18nProvider>

Les remplacements sont fusionnés en profondeur sur les chaînes intégrées — les clés que vous ne fournissez pas conservent leurs valeurs par défaut. Les remplacements sont réappliqués chaque fois que la référence de la prop translations change.


Si votre langue cible n’est pas listée ci-dessus, créez un objet qui satisfait DeepPartial<FireCMSTranslations> (vous n’avez pas à fournir chaque clé — les clés manquantes reviennent automatiquement à l’anglais) et passez-le sous un nouveau code de paramètre régional :

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...",
// … ajoutez autant de clés que nécessaire ; le reste est par défaut en anglais
};
<FireCMSi18nProvider
locale="pt" // activer le nouveau paramètre régional
translations={{ pt: ptTranslations }} // fournir ses chaînes
>
{/* … */}
</FireCMSi18nProvider>

PropTypeDéfautDescription
localestring"en"Balise de langue BCP-47 pour la langue active.
translationsRecord<string, DeepPartial<FireCMSTranslations>>Remplacements/ajouts de chaînes par paramètre régional.

Toutes les chaînes traduisibles sont définies dans l’interface FireCMSTranslations exportée depuis @firecms/core. Voici un résumé catégorisé des clés les plus fréquemment personnalisées :

CléDéfaut (en)
saveSave
createCreate
save_and_closeSave and close
create_and_closeCreate and close
create_copyCreate copy
discardDiscard
clearClear
cancelCancel
CléDéfaut (en)
editEdit
copyCopy
deleteDelete
delete_selectedDelete
CléDéfaut (en)
searchSearch
filterFilter
no_itemsNo items
no_entries_foundNo entries found
create_your_first_entryCreate your first entry
addAdd
removeRemove
CléDéfaut (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?
discard_changesDiscard changes
keep_editingKeep editing
CléDéfaut (en)
open_menuOpen menu
close_drawerClose drawer
homeHome
adminAdmin
log_outLog out
CléDéfaut (en)
errorError
error_uploading_fileError uploading file
error_deletingError deleting
internal_errorInternal ERROR
page_not_foundPage not found
back_to_homeBack to home
CléDéfaut (en)
auth_sign_inSign In
auth_sign_upSign Up
auth_passwordPassword
auth_reset_passwordReset password
auth_wrong_passwordWrong password. Please try again.
auth_user_not_foundUser not found
CléDéfaut (en)
importImport
import_dataImport data
exportExport
export_dataExport data
downloadDownload

Pour la liste complète des clés avec leurs définitions TypeScript, voir le fichier source FireCMSTranslations et le paramètre régional de base anglais sur GitHub.


Vous pouvez changer la langue active à l’exécution en mettant à jour la prop locale. FireCMS basculera automatiquement sauf si l’utilisateur a déjà stocké une préférence personnelle dans localStorage.

Pour effacer la préférence stockée et forcer un changement de langue :

import { FIRECMS_LOCALE_STORAGE_KEY } from "@firecms/core";
// Effacer la préférence utilisateur, puis définir le nouveau paramètre régional via la prop `locale`
localStorage.removeItem(FIRECMS_LOCALE_STORAGE_KEY);

Si vous ajoutez une traduction complète pour une nouvelle langue et souhaitez la partager avec la communauté, nous accueillons les pull requests !

  1. Ajoutez un nouveau fichier packages/firecms_core/src/locales/<code>.ts en suivant la structure du en.ts existant.
  2. Enregistrez-le dans FireCMSi18nProvider.tsx.
  3. Ouvrez une pull request — merci ! 🎉

Des questions ? Rejoignez la communauté Discord.