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 uns0>.',
+ description:
+ 'Sie können Ihren OPENAI_TOKEN verwenden, siehe <0>hier0>.',
+ },
+ },
+
+ 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)