From 1bda522a331c222028fc57d6175f3712d712d30b Mon Sep 17 00:00:00 2001 From: j4n-e4t <130256240+j4n-e4t@users.noreply.github.com> Date: Wed, 25 Sep 2024 17:34:18 +0200 Subject: [PATCH] (translations): added german --- src/i18n/i18n.ts | 2 + src/i18n/locales/de.ts | 318 ++++++++++++++++++ .../editor-page/top-navbar/top-navbar.tsx | 12 + 3 files changed, 332 insertions(+) create mode 100644 src/i18n/locales/de.ts diff --git a/src/i18n/i18n.ts b/src/i18n/i18n.ts index 6e1c3280..94e2e9b5 100644 --- a/src/i18n/i18n.ts +++ b/src/i18n/i18n.ts @@ -3,11 +3,13 @@ import { initReactI18next } from 'react-i18next'; import { en, enMetadata } from './locales/en'; import { es } from './locales/es'; import { fr } from './locales/fr'; +import { de } from './locales/de'; const resources = { en, es, fr, + de, }; i18n.use(initReactI18next).init({ diff --git a/src/i18n/locales/de.ts b/src/i18n/locales/de.ts new file mode 100644 index 00000000..8e84fff8 --- /dev/null +++ b/src/i18n/locales/de.ts @@ -0,0 +1,318 @@ +import type { LanguageMetadata, LanguageTranslation } from '../types'; + +export const de: LanguageTranslation = { + translation: { + menu: { + file: { + file: 'Datei', + new: 'Neu', + open: 'Öffnen', + save: 'Save', + import_database: 'Import Datenbank', + export_sql: 'SQL exportieren', + export_as: 'Exportieren als', + delete_diagram: 'Diagramm löschen', + exit: 'Beenden', + }, + edit: { + edit: 'Bearbeiten', + undo: 'Rückgängig', + redo: 'Wiederholen', + clear: 'Leeren', + }, + view: { + view: 'Ansicht', + show_sidebar: 'Seitenleiste anzeigen', + hide_sidebar: 'Seitenleiste ausblenden', + hide_cardinality: 'Kardinalität ausblenden', + show_cardinality: 'Kardinalität anzeigen', + zoom_on_scroll: 'Zoom beim Scrollen', + theme: 'Stil', + change_language: 'Sprache', + }, + help: { + help: 'Hilfe', + visit_website: 'ChartDB Website', + join_discord: 'ChartDB Discord', + schedule_a_call: 'ChartDB kontaktieren', + }, + }, + + delete_diagram_alert: { + title: 'Diagramm löschen', + description: + 'Diese Aktion kann nicht rückgängig gemacht werden. Das Diagramm wird dauerhaft gelöscht.', + cancel: 'Abbrechen', + delete: 'Löschen', + }, + + clear_diagram_alert: { + title: 'Diagramm leeren', + description: + 'Diese Aktion kann nicht rückgängig gemacht werden. Alle Daten im Diagramm werden dauerhaft gelöscht.', + cancel: 'Abbrechen', + clear: 'Löschen', + }, + + reorder_diagram_alert: { + title: 'Diagramm neu anordnen', + description: + 'Diese Aktion wird alle Tabellen im Diagramm neu anordnen. Wollen Sie fortfahren?', + reorder: 'Neu anordnen', + cancel: 'Abbrechen', + }, + + multiple_schemas_alert: { + title: 'Multiple Schemas', + description: + '{{schemasCount}} Schemas in diesem Diagramm. Derzeit angezeigt: {{formattedSchemas}}.', + dont_show_again: 'Nicht wieder anzeigen', + change_schema: 'Ändern', + none: 'Keine', + }, + + theme: { + system: 'System', + light: 'Hell', + dark: 'Dunkel', + }, + + zoom: { + on: 'An', + off: 'Aus', + }, + + last_saved: 'Zuletzt gespeichert', + saved: 'Gespeichert', + diagrams: 'Diagramme', + loading_diagram: 'Diagramm laden...', + deselect_all: 'Alle auswählen', + select_all: 'Alle auswählen', + clear: 'Leeren', + show_more: 'Mehr anzeigen', + show_less: 'Weniger anzeigen', + + side_panel: { + schema: 'Schema:', + filter_by_schema: 'Nach Schema filtern', + search_schema: 'Schema suchen...', + no_schemas_found: 'Keine Schemas gefunden.', + view_all_options: 'Alle Optionen anzeigen...', + tables_section: { + tables: 'Tabellen', + add_table: 'Tabelle hinzufügen', + filter: 'Filter', + collapse: 'Alle einklappen', + + table: { + fields: 'Felder', + nullable: 'Nullable?', + primary_key: 'Primärschlüssel', + indexes: 'Indizes', + comments: 'Kommentare', + no_comments: 'Keine Kommentare', + add_field: 'Feld hinzufügen', + add_index: 'Index hinzufügen', + index_select_fields: 'Felder auswählen', + no_types_found: 'Keine Datentypen gefunden', + field_name: 'Name', + field_type: 'Datentyp', + field_actions: { + title: 'Feldattribute', + unique: 'Eindeutig', + comments: 'Kommentare', + no_comments: 'Keine Kommentare', + delete_field: 'Feld löschen', + }, + index_actions: { + title: 'Indexattribute', + name: 'Name', + unique: 'Eindeutig', + delete_index: 'Index löschen', + }, + table_actions: { + title: 'Tabellenattribute', + change_schema: 'Schema ändern', + add_field: 'Feld hinzufügen', + add_index: 'Index hinzufügen', + delete_table: 'Tabelle löschen', + }, + }, + empty_state: { + title: 'Keine Tabellen', + description: 'Erstellen Sie eine Tabelle, um zu beginnen', + }, + }, + relationships_section: { + relationships: 'Beziehungen', + filter: 'Filter', + add_relationship: 'Beziehung hinzufügen', + collapse: 'Alle einklappen', + relationship: { + primary: 'Primary Table', + foreign: 'Referenced Table', + cardinality: 'Kardinalität', + delete_relationship: 'Löschen', + relationship_actions: { + title: 'Aktionen', + delete_relationship: 'Beziehung löschen', + }, + }, + empty_state: { + title: 'Keine Beziehungen', + description: + 'Erstellen Sie eine Beziehung, um Tabellen zu verbinden', + }, + }, + }, + + toolbar: { + zoom_in: 'Zoom In', + zoom_out: 'Zoom Out', + save: 'Speichern', + show_all: 'Alle anzeigen', + undo: 'Rückgängig', + redo: 'Wiederholen', + reorder_diagram: 'Diagramm neu anordnen', + }, + + new_diagram_dialog: { + database_selection: { + title: 'Datenbank auswählen', + description: 'Jede Datenbank wird unterschiedlich importiert.', + check_examples_long: 'Beispiele ansehen', + check_examples_short: 'Beispiele', + }, + + import_database: { + title: 'Datenbank importieren', + database_edition: 'Datenbank Edition:', + step_1: 'Führen Sie dieses Skript in Ihrer Datenbank aus:', + step_2: 'Fügen Sie das Skriptergebnis hier ein:', + script_results_placeholder: 'Skript hier...', + ssms_instructions: { + button_text: 'SSMS Anweisungen', + title: 'Anweisungen', + step_1: 'Gehen Sie zu Tools > Optionen > Abfrageergebnisse > SQL Server.', + step_2: 'Wenn Sie "Ergebnisse in Raster" verwenden, ändern Sie die Maximale Anzahl von Zeichen für Nicht-XML-Daten (auf 9999999 setzen).', + }, + }, + + cancel: 'Abbrechen', + back: 'Zurück', + empty_diagram: 'Diagramm leeren', + continue: 'Weiter', + import: 'Importieren', + }, + + open_diagram_dialog: { + title: 'Diagramm öffnen', + description: 'Wählen Sie ein Diagramm aus der Liste unten aus.', + table_columns: { + name: 'Name', + created_at: 'Erstellt am', + last_modified: 'Zuletzt geändert', + tables_count: 'Tabellen', + }, + cancel: 'Abbrechen', + open: 'Öffnen', + }, + + export_sql_dialog: { + title: 'SQL exportieren', + description: + 'Exportieren Sie das Schema Ihres Diagramms in ein {{databaseType}} Skript', + close: 'Schließen', + loading: { + text: 'KI erstellt SQL für {{databaseType}}...', + description: 'Dies sollte unter 30 Sekunden dauern.', + }, + error: { + message: + 'Fehler beim Generieren des SQL-Skripts. Bitte versuchen Sie es später erneut oder <0>kontaktieren Sie uns.', + description: + 'Sie können Ihren OPENAI_TOKEN verwenden, siehe <0>hier.', + }, + }, + + create_relationship_dialog: { + title: 'Beziehung erstellen', + primary_table: 'Primäre Tabelle', + primary_field: 'Primäres Feld', + referenced_table: 'Referenzierte Tabelle', + referenced_field: 'Referenziertes Feld', + primary_table_placeholder: 'Tabelle auswählen', + primary_field_placeholder: 'Feld auswählen', + referenced_table_placeholder: 'Tabelle auswählen', + referenced_field_placeholder: 'Feld auswählen', + no_tables_found: 'Keine Tabellen gefunden', + no_fields_found: 'Keine Felder gefunden', + create: 'Erstellen', + cancel: 'Abbrechen', + }, + + import_database_dialog: { + title: 'Datenbank importieren', + override_alert: { + title: 'Datenbank importieren', + content: { + alert: 'Importieren Sie dieses Diagramm wird vorhandene Tabellen und Beziehungen beeinflussen.', + new_tables: + '{{newTablesNumber}} neue Tabellen werden hinzugefügt.', + new_relationships: + '{{newRelationshipsNumber}} neue Beziehungen werden erstellt.', + tables_override: + '{{tablesOverrideNumber}} Tabellen werden überschrieben.', + proceed: 'Wollen Sie fortfahren?', + }, + import: 'Importieren', + cancel: 'Abbrechen', + }, + }, + + new_table_schema_dialog: { + title: 'Schema auswählen', + description: + 'Mehrere Schemas sind derzeit angezeigt. Wählen Sie eines für die neue Tabelle aus.', + cancel: 'Abbrechen', + confirm: 'Bestätigen', + }, + + update_table_schema_dialog: { + title: 'Schema ändern', + description: 'Schema der Tabelle "{{tableName}}" ändern', + cancel: 'Abbrechen', + confirm: 'Ändern', + }, + + star_us_dialog: { + title: 'Hilf uns, uns zu verbessern!', + description: + 'Gefällt Ihnen ChartDB? Lassen Sie es uns wissen und helfen Sie uns, ChartDB zu verbessern!', + close: 'Nicht jetzt', + confirm: 'Natürlich!', + }, + + relationship_type: { + one_to_one: 'Ein zu Eins (1:1)', + one_to_many: 'Ein zu Viele (1:n)', + many_to_one: 'Viele zu Eins (n:1)', + many_to_many: 'Viele zu Viele (n:m)', + }, + + canvas_context_menu: { + new_table: 'Neue Tabelle', + new_relationship: 'Neue Beziehung', + }, + + table_node_context_menu: { + edit_table: 'Tabelle bearbeiten', + delete_table: 'Tabelle löschen', + }, + }, +}; + +export const deMetadata: LanguageMetadata = { + name: 'Deutsch', + code: 'de', +}; diff --git a/src/pages/editor-page/top-navbar/top-navbar.tsx b/src/pages/editor-page/top-navbar/top-navbar.tsx index f8b2ec4b..8ea30996 100644 --- a/src/pages/editor-page/top-navbar/top-navbar.tsx +++ b/src/pages/editor-page/top-navbar/top-navbar.tsx @@ -45,6 +45,7 @@ import { useLayout } from '@/hooks/use-layout'; import { useTheme } from '@/hooks/use-theme'; import { enMetadata } from '@/i18n/locales/en'; import { esMetadata } from '@/i18n/locales/es'; +import { deMetadata } from '@/i18n/locales/de'; import { useLocalConfig } from '@/hooks/use-local-config'; import { frMetadata } from '@/i18n/locales/fr'; @@ -658,6 +659,17 @@ export const TopNavbar: React.FC = () => { {t('menu.view.change_language')} + + changeLanguage(deMetadata.code) + } + checked={ + i18n.language === + deMetadata.code + } + > + {deMetadata.name} + changeLanguage(enMetadata.code)