feat: add German (de) locale support
This commit is contained in:
153
src/lib/i18n.ts
153
src/lib/i18n.ts
@@ -475,7 +475,157 @@ const es: Record<keyof typeof en, string> = {
|
||||
|
||||
export type TranslationKey = keyof typeof en;
|
||||
|
||||
const messages: Record<string, Record<string, string>> = { en, fr, es };
|
||||
const de: Record<keyof typeof en, string> = {
|
||||
'login.title': 'PinchChat',
|
||||
'login.subtitle': 'Mit deinem OpenClaw-Gateway verbinden',
|
||||
'login.gatewayUrl': 'Gateway-URL',
|
||||
'login.token': 'Token',
|
||||
'login.tokenPlaceholder': 'Gateway-Token eingeben',
|
||||
'login.connect': 'Verbinden',
|
||||
'login.connecting': 'Verbinde…',
|
||||
'login.showToken': 'Token anzeigen',
|
||||
'login.hideToken': 'Token verbergen',
|
||||
'login.storedLocally': 'Zugangsdaten werden lokal in deinem Browser gespeichert',
|
||||
'login.wsHint': 'URL muss mit ws:// oder wss:// beginnen',
|
||||
|
||||
'header.title': 'PinchChat',
|
||||
'header.connected': 'Verbunden',
|
||||
'header.disconnected': 'Getrennt',
|
||||
'header.logout': 'Abmelden',
|
||||
'header.toggleSidebar': 'Seitenleiste ein-/ausblenden',
|
||||
'header.changeLanguage': 'Sprache ändern',
|
||||
'header.soundOn': 'Benachrichtigungston aktivieren',
|
||||
'header.soundOff': 'Benachrichtigungston deaktivieren',
|
||||
|
||||
'chat.welcome': 'PinchChat',
|
||||
'chat.welcomeSub': 'Sende eine Nachricht, um zu beginnen',
|
||||
'chat.suggestions': 'Probiere z.\u00a0B. …',
|
||||
'chat.suggestion1': 'Fasse meine letzten E-Mails zusammen',
|
||||
'chat.suggestion2': 'Was steht heute in meinem Kalender?',
|
||||
'chat.suggestion3': 'Suche im Web nach aktuellen Nachrichten',
|
||||
'chat.suggestion4': 'Hilf mir, ein Skript zu schreiben',
|
||||
'chat.loadingHistory': 'Nachrichten werden geladen…',
|
||||
'chat.inputPlaceholder': 'Nachricht eingeben…',
|
||||
'chat.inputLabel': 'Nachricht',
|
||||
'chat.attachFile': 'Datei anhängen',
|
||||
'chat.send': 'Senden',
|
||||
'chat.stop': 'Stoppen',
|
||||
'chat.showPreview': 'Markdown-Vorschau',
|
||||
'chat.hidePreview': 'Vorschau ausblenden',
|
||||
'chat.scrollToBottom': 'Neue Nachrichten',
|
||||
'chat.scrollDown': 'Nach unten scrollen',
|
||||
'chat.collapseTools': 'Alle Tools einklappen',
|
||||
'chat.expandTools': 'Alle Tools ausklappen',
|
||||
'chat.messages': 'Chat-Nachrichten',
|
||||
'chat.thinking': 'Denkt nach…',
|
||||
|
||||
'sidebar.title': 'Sitzungen',
|
||||
'sidebar.empty': 'Keine Sitzungen',
|
||||
'sidebar.search': 'Sitzungen suchen…',
|
||||
'sidebar.noResults': 'Keine Treffer',
|
||||
'sidebar.pin': 'Sitzung anheften',
|
||||
'sidebar.unpin': 'Sitzung lösen',
|
||||
'sidebar.pinned': 'Angeheftet',
|
||||
'sidebar.delete': 'Sitzung löschen',
|
||||
'sidebar.deleteConfirm': 'Diese Sitzung löschen? Dies kann nicht rückgängig gemacht werden.',
|
||||
'sidebar.deleteCancel': 'Abbrechen',
|
||||
'sidebar.openSplit': 'In geteilter Ansicht öffnen',
|
||||
'sidebar.close': 'Seitenleiste schließen',
|
||||
'sidebar.clearSearch': 'Suche leeren',
|
||||
'sidebar.filterAll': 'Alle',
|
||||
'sidebar.filterActive': 'Aktive',
|
||||
'split.close': 'Geteilte Ansicht schließen',
|
||||
'app.mainChat': 'Haupt-Chat',
|
||||
'app.splitPane': 'Geteiltes Fenster',
|
||||
'app.skipToChat': 'Zum Eingabefeld springen',
|
||||
|
||||
'thinking.label': 'Nachdenken',
|
||||
'thinking.reasoning': 'Denkt nach…',
|
||||
|
||||
'tool.parameters': 'Parameter',
|
||||
'tool.result': 'Ergebnis',
|
||||
|
||||
'connection.reconnecting': 'Verbindung verloren — wird wiederhergestellt…',
|
||||
'connection.reconnected': 'Wieder verbunden!',
|
||||
|
||||
'message.copy': 'Nachricht kopieren',
|
||||
'message.copied': 'Kopiert!',
|
||||
'message.retry': 'Nachricht erneut senden',
|
||||
'message.metadata': 'Nachrichtendetails',
|
||||
'message.rawJson': 'Roh-JSON',
|
||||
'message.hideRawJson': 'Roh-JSON ausblenden',
|
||||
|
||||
'time.yesterday': 'Gestern',
|
||||
'time.today': 'Heute',
|
||||
|
||||
'shortcuts.title': 'Tastenkürzel',
|
||||
'shortcuts.send': 'Nachricht senden',
|
||||
'shortcuts.newline': 'Neue Zeile',
|
||||
'shortcuts.search': 'Sitzungen suchen',
|
||||
'shortcuts.switchSession': 'Vorherige / nächste Sitzung',
|
||||
'shortcuts.closeSidebar': 'Seitenleiste / Suche schließen',
|
||||
'shortcuts.stop': 'Generierung stoppen',
|
||||
'shortcuts.help': 'Tastenkürzel anzeigen',
|
||||
'shortcuts.close': 'Schließen',
|
||||
'shortcuts.chatSection': 'Chat',
|
||||
|
||||
'error.title': 'Etwas ist schiefgelaufen',
|
||||
'error.description': 'Beim Rendern der Oberfläche ist ein unerwarteter Fehler aufgetreten. Du kannst es erneut versuchen oder die Seite neu laden.',
|
||||
'error.retry': 'Erneut versuchen',
|
||||
'error.reload': 'Seite neu laden',
|
||||
'shortcuts.navigationSection': 'Navigation',
|
||||
'shortcuts.generalSection': 'Allgemein',
|
||||
|
||||
'header.export': 'Unterhaltung als Markdown exportieren',
|
||||
'header.compact': 'Kompaktieren',
|
||||
'header.compacting': 'Kompaktiere…',
|
||||
'header.sessionInfo': 'Sitzungsinfo',
|
||||
'sessionInfo.sessionKey': 'Sitzungsschlüssel',
|
||||
'sessionInfo.channel': 'Kanal',
|
||||
'sessionInfo.kind': 'Typ',
|
||||
'sessionInfo.model': 'Modell',
|
||||
'sessionInfo.agent': 'Agent',
|
||||
'sessionInfo.messages': 'Nachrichten',
|
||||
'sessionInfo.totalTokens': 'Tokens gesamt',
|
||||
'sessionInfo.inputTokens': 'Eingabe',
|
||||
'sessionInfo.outputTokens': 'Ausgabe',
|
||||
'sessionInfo.contextWindow': 'Kontext',
|
||||
'sessionInfo.lastActive': 'Letzte Aktivität',
|
||||
|
||||
'theme.title': 'Design',
|
||||
'theme.mode': 'Modus',
|
||||
'theme.accent': 'Akzent',
|
||||
'theme.system': 'System',
|
||||
'theme.dark': 'Dunkel',
|
||||
'theme.light': 'Hell',
|
||||
'theme.oled': 'OLED',
|
||||
|
||||
'search.placeholder': 'In Nachrichten suchen…',
|
||||
'search.noResults': '0 Ergebnisse',
|
||||
'search.prev': 'Vorheriger Treffer',
|
||||
'search.next': 'Nächster Treffer',
|
||||
'shortcuts.searchMessages': 'In Nachrichten suchen',
|
||||
|
||||
'settings.sendShortcut': 'Senden mit',
|
||||
'settings.sendEnter': 'Enter',
|
||||
'settings.sendCtrlEnter': 'Strg+Enter',
|
||||
|
||||
'message.bookmark': 'Nachricht markieren',
|
||||
'message.removeBookmark': 'Lesezeichen entfernen',
|
||||
'chat.bookmarks': 'Lesezeichen',
|
||||
'chat.export': 'Unterhaltung exportieren',
|
||||
'chat.contextCompacted': 'Kontext kompaktiert — ältere Nachrichten lokal zwischengespeichert',
|
||||
'slash.commands': 'Befehle',
|
||||
'slash.status': 'Sitzungsstatus und Nutzung anzeigen',
|
||||
'slash.reasoning': 'Reasoning-Modus umschalten',
|
||||
'slash.verbose': 'Ausführliche Ausgabe umschalten',
|
||||
'slash.model': 'Modell für diese Sitzung wechseln',
|
||||
'slash.compact': 'Gesprächskontext kompaktieren',
|
||||
'slash.reset': 'Sitzung zurücksetzen',
|
||||
'slash.help': 'Verfügbare Befehle anzeigen',
|
||||
};
|
||||
|
||||
const messages: Record<string, Record<string, string>> = { en, fr, es, de };
|
||||
|
||||
export const supportedLocales = Object.keys(messages) as string[];
|
||||
|
||||
@@ -484,6 +634,7 @@ export const localeLabels: Record<string, string> = {
|
||||
en: 'EN',
|
||||
fr: 'FR',
|
||||
es: 'ES',
|
||||
de: 'DE',
|
||||
};
|
||||
|
||||
function resolveInitialLocale(): string {
|
||||
|
||||
Reference in New Issue
Block a user