Internationalisierung (i18n)
FireCMS enthält ein eingebautes Internationalisierungssystem basierend auf i18next und react-i18next. Standardmäßig werden folgende Sprachen unterstützt:
| Code | Sprache |
|---|---|
en | Englisch (Standard) |
es | Spanisch |
de | Deutsch |
fr | Französisch |
it | Italienisch |
hi | Hindi |
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.
Grundlegende Einrichtung
Abschnitt betitelt „Grundlegende Einrichtung“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", …).
Benutzerpräferenz wird gespeichert
Abschnitt betitelt „Benutzerpräferenz wird gespeichert“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.
Integrierte Strings überschreiben
Abschnitt betitelt „Integrierte Strings überschreiben“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.
Eine völlig neue Sprache hinzufügen
Abschnitt betitelt „Eine völlig neue Sprache hinzufügen“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>Props-Referenz
Abschnitt betitelt „Props-Referenz“| Prop | Typ | Standard | Beschreibung |
|---|---|---|---|
locale | string | "en" | BCP-47-Sprachcode für die aktive Sprache. |
translations | Record<string, DeepPartial<FireCMSTranslations>> | — | Sprachspezifische String-Überschreibungen / -Ergänzungen. |
Vollständige Liste überstzbarer Schlüssel
Abschnitt betitelt „Vollständige Liste überstzbarer Schlüssel“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:
Formularaktionen
Abschnitt betitelt „Formularaktionen“| Schlüssel | Standard (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 |
Entity-Aktionen
Abschnitt betitelt „Entity-Aktionen“| Schlüssel | Standard (en) |
|---|---|
edit | Edit |
copy | Copy |
delete | Delete |
delete_selected | Delete |
Kollektionstabelle
Abschnitt betitelt „Kollektionstabelle“| Schlüssel | Standard (en) |
|---|---|
search | Search |
filter | Filter |
no_items | No items |
no_entries_found | No entries found |
create_your_first_entry | Create your first entry |
add | Add |
remove | Remove |
Dialoge
Abschnitt betitelt „Dialoge“| Schlüssel | Standard (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? |
discard_changes | Discard changes |
keep_editing | Keep editing |
Navigation & Layout
Abschnitt betitelt „Navigation & Layout“| Schlüssel | Standard (en) |
|---|---|
open_menu | Open menu |
close_drawer | Close drawer |
home | Home |
admin | Admin |
log_out | Log out |
Fehlerzustände
Abschnitt betitelt „Fehlerzustände“| Schlüssel | Standard (en) |
|---|---|
error | Error |
error_uploading_file | Error uploading file |
error_deleting | Error deleting |
internal_error | Internal ERROR |
page_not_found | Page not found |
back_to_home | Back to home |
Authentifizierung
Abschnitt betitelt „Authentifizierung“| Schlüssel | Standard (en) |
|---|---|
auth_sign_in | Sign In |
auth_sign_up | Sign Up |
auth_password | Password |
auth_reset_password | Reset password |
auth_wrong_password | Wrong password. Please try again. |
auth_user_not_found | User not found |
Datenimport / -export
Abschnitt betitelt „Datenimport / -export“| Schlüssel | Standard (en) |
|---|---|
import | Import |
import_data | Import data |
export | Export |
export_data | Export data |
download | Download |
Die vollständige Liste der Schlüssel mit ihren TypeScript-Definitionen finden Sie in der
FireCMSTranslations-Quelldatei
und der englischen Basis-Locale
auf GitHub.
Sprachen zur Laufzeit dynamisch wechseln
Abschnitt betitelt „Sprachen zur Laufzeit dynamisch wechseln“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 setzenlocalStorage.removeItem(FIRECMS_LOCALE_STORAGE_KEY);Eine neue Sprache beitragen
Abschnitt betitelt „Eine neue Sprache beitragen“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!
- Fügen Sie eine neue Datei
packages/firecms_core/src/locales/<code>.tshinzu, nach der Struktur der vorhandenenen.ts. - Registrieren Sie sie innerhalb von
FireCMSi18nProvider.tsx. - Öffnen Sie einen Pull Request — vielen Dank! 🎉
Haben Sie Fragen? Treten Sie der Discord-Community bei.