Skip to content

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:

  1. URL-Präfix - Sprachcode im URL-Pfad (/en/, /de/, /bg/)
  2. Benutzereinstellung - Sprache gespeichert in user_settings.language
  3. Tenant-Standard - Sprache gesetzt in tenants.language
  4. Browser-Sprache - Erkannt aus Browser-Einstellungen
  5. 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

typescript
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

sql
-- 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

tsx
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 werden
  • landing.json - Landing-Page-Inhalt
  • admin.json - Admin-Dashboard-Strings
  • safety.json - Safety-Modul-Strings
  • dashboard.json - Dashboard-Strings
  • login.json - Login-Seiten-Strings

Übersetzungen in Komponenten verwenden

Grundlegende Übersetzung

tsx
import { useTranslation } from 'react-i18next';

function MyComponent() {
  const { t } = useTranslation('common');
  
  return <h1>{t('welcome.title')}</h1>;
}

Übersetzung mit Namespace

tsx
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:

  1. Übersetzungsdateien in src/i18n/locales/{lang}/ erstellen
  2. Sprache zu resources in src/i18n/config.ts hinzufügen
  3. Sprachumschalt-Komponente aktualisieren
  4. Sprache zu Datenbank CHECK-Constraints hinzufügen
  5. VitePress-Dokumentationskonfiguration aktualisieren

API-Referenz

getUserLanguage()

Gibt die Spracheinstellung des aktuellen Benutzers zurück.

typescript
import { getUserLanguage } from '@/lib/i18n-helpers';

const lang = await getUserLanguage(); // 'de' | 'en' | 'bg' | null

getTenantLanguage()

Gibt die Standardsprache des Tenants zurück.

typescript
import { getTenantLanguage } from '@/lib/i18n-helpers';

const lang = await getTenantLanguage(); // 'de' | 'en' | 'bg' | null

detectLanguage()

Erkennt Sprache mit vollständiger Prioritätskette.

typescript
import { detectLanguage } from '@/lib/i18n-helpers';

const lang = await detectLanguage(); // 'de' | 'en' | 'bg'

Best Practices

  1. Immer Übersetzungsschlüssel verwenden - Niemals Strings in Komponenten hardcodieren
  2. Beschreibende Schlüssel verwenden - Verwenden Sie Namespace-Schlüssel wie landing.hero.title
  3. Übersetzungen konsistent halten - Verwenden Sie dieselbe Terminologie in allen Sprachen
  4. Alle Sprachen testen - Überprüfen Sie, dass die UI in allen unterstützten Sprachen korrekt funktioniert

Veröffentlicht unter kommerzieller Lizenz