Sprachunterstützung
Lager Guru unterstützt mehrere Sprachen mit einem umfassenden Internationalisierungssystem (i18n). Die Plattform unterstützt derzeit Deutsch (de), Englisch (en) und Bulgarisch (bg).
Sprach-Erkennungs-Priorität
Das System verwendet eine prioritätsbasierte Sprach-Erkennungskette:
- URL-Präfix - Sprachcode im URL-Pfad (
/en/,/de/,/bg/) - Benutzereinstellung - Sprache gespeichert in
user_settings.language - Tenant-Standard - Sprache gesetzt in
tenants.language - Browser-Sprache - Erkannt aus Browser-Einstellungen
- Fallback - Standardmäßig Deutsch (
de)
Benutzer-Spracheinstellung
Benutzer können ihre bevorzugte Sprache mit der Sprachumschalt-Komponente festlegen. Die Einstellung wird in der user_settings Tabelle gespeichert und bleibt über Sitzungen hinweg erhalten.
Spracheinstellung festlegen
import { updateUserLanguage } from '@/lib/i18n-helpers';
// Benutzer-Spracheinstellung aktualisieren
await updateUserLanguage('en'); // oder 'de', 'bg'Tenant-Sprach-Standards
Tenant-Administratoren können eine Standardsprache für ihre Organisation festlegen. Diese Sprache wird verwendet, wenn:
- Benutzer keine Spracheinstellung gesetzt hat
- Benutzer nicht authentifiziert ist
Tenant-Sprache festlegen
-- Tenant-Standardsprache aktualisieren
UPDATE tenants
SET language = 'en'
WHERE id = 'tenant-uuid';Sprachumschalt-Komponente
Die <LanguageSwitcher /> Komponente ist in der gesamten Anwendung verfügbar und ermöglicht Benutzern, ihre Spracheinstellung zu ändern.
Verwendung
import { LanguageSwitcher } from '@/components/LanguageSwitcher';
function MyComponent() {
return (
<div>
<LanguageSwitcher />
</div>
);
}Übersetzungsschlüssel
Alle UI-Strings sind in JSON-Übersetzungsdateien gespeichert, die sich in src/i18n/locales/{lang}/ befinden:
common.json- Gemeinsame Strings, die in der gesamten Anwendung verwendet werdenlanding.json- Landing-Page-Inhaltadmin.json- Admin-Dashboard-Stringssafety.json- Safety-Modul-Stringsdashboard.json- Dashboard-Stringslogin.json- Login-Seiten-Strings
Übersetzungen in Komponenten verwenden
Grundlegende Übersetzung
import { useTranslation } from 'react-i18next';
function MyComponent() {
const { t } = useTranslation('common');
return <h1>{t('welcome.title')}</h1>;
}Übersetzung mit Namespace
import { useTranslation } from 'react-i18next';
function LandingPage() {
const { t } = useTranslation('landing');
return <h1>{t('hero.title')}</h1>;
}Neue Sprachen hinzufügen
Um Unterstützung für eine neue Sprache hinzuzufügen:
- Übersetzungsdateien in
src/i18n/locales/{lang}/erstellen - Sprache zu
resourcesinsrc/i18n/config.tshinzufügen - Sprachumschalt-Komponente aktualisieren
- Sprache zu Datenbank CHECK-Constraints hinzufügen
- VitePress-Dokumentationskonfiguration aktualisieren
API-Referenz
getUserLanguage()
Gibt die Spracheinstellung des aktuellen Benutzers zurück.
import { getUserLanguage } from '@/lib/i18n-helpers';
const lang = await getUserLanguage(); // 'de' | 'en' | 'bg' | nullgetTenantLanguage()
Gibt die Standardsprache des Tenants zurück.
import { getTenantLanguage } from '@/lib/i18n-helpers';
const lang = await getTenantLanguage(); // 'de' | 'en' | 'bg' | nulldetectLanguage()
Erkennt Sprache mit vollständiger Prioritätskette.
import { detectLanguage } from '@/lib/i18n-helpers';
const lang = await detectLanguage(); // 'de' | 'en' | 'bg'Best Practices
- Immer Übersetzungsschlüssel verwenden - Niemals Strings in Komponenten hardcodieren
- Beschreibende Schlüssel verwenden - Verwenden Sie Namespace-Schlüssel wie
landing.hero.title - Übersetzungen konsistent halten - Verwenden Sie dieselbe Terminologie in allen Sprachen
- Alle Sprachen testen - Überprüfen Sie, dass die UI in allen unterstützten Sprachen korrekt funktioniert