Zum Inhalt springen

Internationalisierung (i18n)

FireCMS enthält ein eingebautes Internationalisierungssystem basierend auf i18next und react-i18next. Standardmäßig werden folgende Sprachen unterstützt:

CodeSprache
enEnglisch (Standard)
esSpanisch
deDeutsch
frFranzösisch
itItalienisch
hiHindi

Alle Sprachumschaltungen, die Persistenz zwischen Sitzungen und die Zeichenketten-Suche werden automatisch durch FireCMSi18nProvider verwaltet, das Sie an der Wurzel Ihres FireCMS-Komponentenbaums einhängen.


Umschließen Sie Ihren FireCMS-Baum mit FireCMSi18nProvider. Ein vollständiges Verdrahtungsbeispiel finden Sie auf der Seite Sample PRO-Projekt — das folgende Snippet konzentriert sich nur auf den i18n-Teil:

import {
FireCMS,
FireCMSi18nProvider,
ModeControllerProvider,
Scaffold, AppBar, Drawer, NavigationRoutes, SideDialogs,
SnackbarProvider,
// … weitere Importe
} from "@firecms/core";
export function MyCMSApp() {
// … Controllers einrichten (Auth, Navigation, Storage, etc.)
return (
<SnackbarProvider>
<FireCMSi18nProvider locale="de">
<ModeControllerProvider value={modeController}>
<FireCMS
navigationController={navigationController}
authController={authController}
dataSourceDelegate={firestoreDelegate}
storageSource={storageSource}
>
{({ context, loading }) => {
if (loading) return <CircularProgressCenter size="large" />;
return (
<Scaffold>
<AppBar title="Mein CMS" />
<Drawer />
<NavigationRoutes />
<SideDialogs />
</Scaffold>
);
}}
</FireCMS>
</ModeControllerProvider>
</FireCMSi18nProvider>
</SnackbarProvider>
);
}

Die locale-Eigenschaft akzeptiert jeden BCP-47-Sprachcode ("en", "de", "fr", …).

Wenn ein Benutzer die Sprache über die FireCMS-UI ändert, wird die Wahl in localStorage unter dem Schlüssel firecms_locale gespeichert. Beim nächsten Besuch hat die gespeicherte Präferenz Vorrang vor der locale-Eigenschaft — es sei denn, Sie löschen sie manuell.


Sie können jeden FireCMS-UI-String ersetzen, ohne den Bibliotheks-Quellcode zu berühren. Verwenden Sie die translations-Eigenschaft auf FireCMSi18nProvider:

import { FireCMSi18nProvider } from "@firecms/core";
import type { FireCMSTranslations } from "@firecms/core";
// Geben Sie nur die Schlüssel an, die Sie ändern möchten — alles andere behält seine Standardwerte.
const myTranslations: { [locale: string]: Partial<FireCMSTranslations> } = {
en: {
save: "Publish",
discard: "Throw away",
delete: "Remove",
},
de: {
save: "Veröffentlichen",
discard: "Verwerfen",
delete: "Entfernen",
},
};
// In Ihrem Komponentenbaum:
<FireCMSi18nProvider locale="de" translations={myTranslations}>
{/* … */}
</FireCMSi18nProvider>

Überschreibungen werden tief zusammengeführt mit den integrierten Strings — Schlüssel, die Sie nicht angeben, behalten ihre Standardwerte. Überschreibungen werden erneut angewendet, wenn sich die translations-Eigenschaftsreferenz ändert.


Wenn Ihre Zielsprache oben nicht aufgeführt ist, erstellen Sie ein Objekt, das DeepPartial<FireCMSTranslations> erfüllt (Sie müssen nicht jeden Schlüssel bereitstellen — fehlende Schlüssel fallen automatisch auf Englisch zurück) und übergeben Sie es unter einem neuen Sprachcode:

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...",
// … fügen Sie so viele Schlüssel hinzu, wie Sie benötigen; der Rest fällt auf Englisch zurück
};
<FireCMSi18nProvider
locale="pt" // die neue Sprache aktivieren
translations={{ pt: ptTranslations }} // Strings bereitstellen
>
{/* … */}
</FireCMSi18nProvider>

PropTypStandardBeschreibung
localestring"en"BCP-47-Sprachcode für die aktive Sprache.
translationsRecord<string, DeepPartial<FireCMSTranslations>>Sprachspezifische String-Überschreibungen / -Ergänzungen.

Alle übersetzbaren Strings sind in der FireCMSTranslations-Schnittstelle definiert, die aus @firecms/core exportiert wird. Nachfolgend finden Sie eine kategorisierte Zusammenfassung der am häufigsten angepassten Schlüssel:

SchlüsselStandard (en)
saveSave
createCreate
save_and_closeSave and close
create_and_closeCreate and close
create_copyCreate copy
discardDiscard
clearClear
cancelCancel
SchlüsselStandard (en)
editEdit
copyCopy
deleteDelete
delete_selectedDelete
SchlüsselStandard (en)
searchSearch
filterFilter
no_itemsNo items
no_entries_foundNo entries found
create_your_first_entryCreate your first entry
addAdd
removeRemove
SchlüsselStandard (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
SchlüsselStandard (en)
open_menuOpen menu
close_drawerClose drawer
homeHome
adminAdmin
log_outLog out
SchlüsselStandard (en)
errorError
error_uploading_fileError uploading file
error_deletingError deleting
internal_errorInternal ERROR
page_not_foundPage not found
back_to_homeBack to home
SchlüsselStandard (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
SchlüsselStandard (en)
importImport
import_dataImport data
exportExport
export_dataExport data
downloadDownload

Die vollständige Liste der Schlüssel mit ihren TypeScript-Definitionen finden Sie in der FireCMSTranslations-Quelldatei und der englischen Basis-Locale auf GitHub.


Sie können die aktive Sprache zur Laufzeit ändern, indem Sie die locale-Eigenschaft aktualisieren. FireCMS wechselt automatisch, es sei denn, der Benutzer hat bereits eine persönliche Präferenz in localStorage gespeichert.

Um die gespeicherte Präferenz zu löschen und eine Sprachänderung zu erzwingen:

import { FIRECMS_LOCALE_STORAGE_KEY } from "@firecms/core";
// Benutzerpräferenz löschen, dann die neue Sprache über die `locale`-Eigenschaft setzen
localStorage.removeItem(FIRECMS_LOCALE_STORAGE_KEY);

Wenn Sie eine vollständige Übersetzung für eine neue Sprache hinzufügen und diese mit der Community teilen möchten, sind Pull Requests willkommen!

  1. Fügen Sie eine neue Datei packages/firecms_core/src/locales/<code>.ts hinzu, nach der Struktur der vorhandenen en.ts.
  2. Registrieren Sie sie innerhalb von FireCMSi18nProvider.tsx.
  3. Öffnen Sie einen Pull Request — vielen Dank! 🎉

Haben Sie Fragen? Treten Sie der Discord-Community bei.