From b68b13399123b4948e8fdc4572285d9c980992db Mon Sep 17 00:00:00 2001 From: K Om Senapati Date: Fri, 11 Oct 2024 13:25:22 +0530 Subject: [PATCH] (translations): added hindi language (#234) * (translations): added hindi * chore: add missing fields --------- Co-authored-by: Jonathan Fishner --- src/i18n/i18n.ts | 2 + src/i18n/locales/hi.ts | 352 ++++++++++++++++++ .../editor-page/top-navbar/top-navbar.tsx | 12 + 3 files changed, 366 insertions(+) create mode 100644 src/i18n/locales/hi.ts diff --git a/src/i18n/i18n.ts b/src/i18n/i18n.ts index c64d67c1..aafb5a09 100644 --- a/src/i18n/i18n.ts +++ b/src/i18n/i18n.ts @@ -4,6 +4,7 @@ import { en, enMetadata } from './locales/en'; import { es } from './locales/es'; import { fr } from './locales/fr'; import { de } from './locales/de'; +import { hi } from './locales/hi'; import { ja } from './locales/ja'; const resources = { @@ -11,6 +12,7 @@ const resources = { es, fr, de, + hi, ja, }; diff --git a/src/i18n/locales/hi.ts b/src/i18n/locales/hi.ts new file mode 100644 index 00000000..6faa04fc --- /dev/null +++ b/src/i18n/locales/hi.ts @@ -0,0 +1,352 @@ +import type { LanguageMetadata, LanguageTranslation } from '../types'; + +export const hi: LanguageTranslation = { + translation: { + menu: { + file: { + file: 'फ़ाइल', + new: 'नया', + open: 'खोलें', + save: 'सहेजें', + import_database: 'डेटाबेस आयात करें', + export_sql: 'SQL निर्यात करें', + export_as: 'के रूप में निर्यात करें', + delete_diagram: 'आरेख हटाएँ', + exit: 'बाहर जाएँ', + }, + edit: { + edit: 'संपादित करें', + undo: 'पूर्ववत करें', + redo: 'पुनः करें', + clear: 'साफ़ करें', + }, + view: { + view: 'देखें', + show_sidebar: 'साइडबार दिखाएँ', + hide_sidebar: 'साइडबार छिपाएँ', + hide_cardinality: 'कार्डिनैलिटी छिपाएँ', + show_cardinality: 'कार्डिनैलिटी दिखाएँ', + zoom_on_scroll: 'स्क्रॉल पर ज़ूम', + theme: 'थीम', + change_language: 'भाषा बदलें', + show_dependencies: 'निर्भरता दिखाएँ', + hide_dependencies: 'निर्भरता छिपाएँ', + }, + help: { + help: 'मदद', + visit_website: 'ChartDB वेबसाइट पर जाएँ', + join_discord: 'हमसे Discord पर जुड़ें', + schedule_a_call: 'हमसे बात करें!', + }, + }, + + delete_diagram_alert: { + title: 'आरेख हटाएँ', + description: + 'यह क्रिया पूर्ववत नहीं की जा सकती। यह आरेख स्थायी रूप से हटा दिया जाएगा।', + cancel: 'रद्द करें', + delete: 'हटाएँ', + }, + + clear_diagram_alert: { + title: 'आरेख साफ़ करें', + description: + 'यह क्रिया पूर्ववत नहीं की जा सकती। यह आरेख में सभी डेटा को स्थायी रूप से हटा देगी।', + cancel: 'रद्द करें', + clear: 'साफ़ करें', + }, + + reorder_diagram_alert: { + title: 'आरेख पुनः व्यवस्थित करें', + description: + 'यह क्रिया आरेख में सभी तालिकाओं को पुनः व्यवस्थित कर देगी। क्या आप जारी रखना चाहते हैं?', + reorder: 'पुनः व्यवस्थित करें', + cancel: 'रद्द करें', + }, + + multiple_schemas_alert: { + title: 'एकाधिक स्कीमा', + description: + '{{schemasCount}} स्कीमा इस आरेख में हैं। वर्तमान में प्रदर्शित: {{formattedSchemas}}।', + dont_show_again: 'फिर से न दिखाएँ', + change_schema: 'बदलें', + none: 'कोई नहीं', + }, + + theme: { + system: 'सिस्टम', + light: 'हल्का', + dark: 'गहरा', + }, + + zoom: { + on: 'चालू', + off: 'बंद', + }, + + last_saved: 'अंतिम सहेजा गया', + saved: 'सहेजा गया', + diagrams: 'आरेख', + loading_diagram: 'आरेख लोड हो रहा है...', + deselect_all: 'सभी को अचयनित करें', + select_all: 'सभी को चुनें', + clear: 'साफ़ करें', + show_more: 'अधिक दिखाएँ', + show_less: 'कम दिखाएँ', + + side_panel: { + schema: 'स्कीमा:', + filter_by_schema: 'स्कीमा द्वारा फ़िल्टर करें', + search_schema: 'स्कीमा खोजें...', + no_schemas_found: 'कोई स्कीमा नहीं मिला।', + view_all_options: 'सभी विकल्प देखें...', + tables_section: { + tables: 'तालिकाएँ', + add_table: 'तालिका जोड़ें', + filter: 'फ़िल्टर', + collapse: 'सभी को संक्षिप्त करें', + + table: { + fields: 'फ़ील्ड्स', + nullable: 'Nullable?', + primary_key: 'प्राथमिक कुंजी', + indexes: 'सूचकांक', + comments: 'टिप्पणियाँ', + no_comments: 'कोई टिप्पणी नहीं', + add_field: 'फ़ील्ड जोड़ें', + add_index: 'सूचकांक जोड़ें', + index_select_fields: 'फ़ील्ड्स चुनें', + no_types_found: 'कोई प्रकार नहीं मिला', + field_name: 'नाम', + field_type: 'प्रकार', + field_actions: { + title: 'फ़ील्ड विशेषताएँ', + unique: 'अद्वितीय', + comments: 'टिप्पणियाँ', + no_comments: 'कोई टिप्पणी नहीं', + delete_field: 'फ़ील्ड हटाएँ', + }, + index_actions: { + title: 'सूचकांक विशेषताएँ', + name: 'नाम', + unique: 'अद्वितीय', + delete_index: 'सूचकांक हटाएँ', + }, + table_actions: { + title: 'तालिका क्रियाएँ', + change_schema: 'स्कीमा बदलें', + add_field: 'फ़ील्ड जोड़ें', + add_index: 'सूचकांक जोड़ें', + delete_table: 'तालिका हटाएँ', + }, + }, + empty_state: { + title: 'कोई तालिकाएँ नहीं', + description: 'शुरू करने के लिए एक तालिका बनाएँ', + }, + }, + relationships_section: { + relationships: 'संबंध', + filter: 'फ़िल्टर', + add_relationship: 'संबंध जोड़ें', + collapse: 'सभी को संक्षिप्त करें', + relationship: { + primary: 'प्राथमिक तालिका', + foreign: 'संदर्भित तालिका', + cardinality: 'कार्डिनैलिटी', + delete_relationship: 'हटाएँ', + relationship_actions: { + title: 'क्रियाएँ', + delete_relationship: 'हटाएँ', + }, + }, + empty_state: { + title: 'कोई संबंध नहीं', + description: + 'तालिकाओं को कनेक्ट करने के लिए एक संबंध बनाएँ', + }, + }, + dependencies_section: { + dependencies: 'निर्भरताएँ', + filter: 'फ़िल्टर', + collapse: 'सिकोड़ें', + dependency: { + table: 'तालिका', + dependent_table: 'आश्रित तालिका', + delete_dependency: 'निर्भरता हटाएँ', + dependency_actions: { + title: 'कार्रवाइयाँ', + delete_dependency: 'निर्भरता हटाएँ', + }, + }, + empty_state: { + title: 'कोई निर्भरता नहीं', + description: 'इस अनुभाग में कोई निर्भरता उपलब्ध नहीं है।', + }, + }, + }, + + toolbar: { + zoom_in: 'ज़ूम इन', + zoom_out: 'ज़ूम आउट', + save: 'सहेजें', + show_all: 'सभी दिखाएँ', + undo: 'पूर्ववत करें', + redo: 'पुनः करें', + reorder_diagram: 'आरेख पुनः व्यवस्थित करें', + highlight_overlapping_tables: 'ओवरलैपिंग तालिकाओं को हाइलाइट करें', + }, + + new_diagram_dialog: { + database_selection: { + title: 'आपका डेटाबेस क्या है?', + description: + 'प्रत्येक डेटाबेस की अपनी अनूठी विशेषताएँ और क्षमताएँ होती हैं।', + check_examples_long: 'उदाहरण देखें', + check_examples_short: 'उदाहरण', + }, + + import_database: { + title: 'अपना डेटाबेस आयात करें', + database_edition: 'डेटाबेस संस्करण:', + step_1: 'अपने डेटाबेस में यह स्क्रिप्ट चलाएँ:', + step_2: 'यहाँ स्क्रिप्ट का परिणाम पेस्ट करें:', + script_results_placeholder: 'स्क्रिप्ट के परिणाम यहाँ...', + ssms_instructions: { + button_text: 'SSMS निर्देश', + title: 'निर्देश', + step_1: 'टूल्स > ऑप्शंस > क्वेरी परिणाम > SQL सर्वर पर जाएँ।', + step_2: 'यदि आप "ग्रिड में परिणाम" का उपयोग कर रहे हैं, तो Non-XML डेटा के लिए अधिकतम वर्ण प्राप्ति (9999999 पर सेट करें)।', + }, + instructions_link: 'मदद चाहिए? देखें कैसे', + }, + + cancel: 'रद्द करें', + back: 'वापस', + empty_diagram: 'खाली आरेख', + continue: 'जारी रखें', + import: 'आयात करें', + }, + + open_diagram_dialog: { + title: 'आरेख खोलें', + description: 'नीचे दी गई सूची से एक आरेख चुनें।', + table_columns: { + name: 'नाम', + created_at: 'निर्माण तिथि', + last_modified: 'अंतिम संशोधन', + tables_count: 'तालिकाएँ', + }, + cancel: 'रद्द करें', + open: 'खोलें', + }, + + export_sql_dialog: { + title: 'SQL निर्यात करें', + description: + '{{databaseType}} स्क्रिप्ट के लिए आपका आरेख स्कीमा निर्यात करें', + close: 'बंद करें', + loading: { + text: '{{databaseType}} के लिए AI SQL बना रहा है...', + description: 'इसमें 30 सेकंड तक का समय लग सकता है।', + }, + error: { + message: + 'SQL स्क्रिप्ट उत्पन्न करने में त्रुटि। कृपया बाद में पुनः प्रयास करें या <0>हमसे संपर्क करें।', + description: + 'अपने OPENAI_TOKEN का उपयोग करने के लिए स्वतंत्र महसूस करें, मैनुअल <0>यहाँ देखें।', + }, + }, + + create_relationship_dialog: { + title: 'संबंध बनाएँ', + primary_table: 'प्राथमिक तालिका', + primary_field: 'प्राथमिक फ़ील्ड', + referenced_table: 'संदर्भित तालिका', + referenced_field: 'संदर्भित फ़ील्ड', + primary_table_placeholder: 'तालिका चुनें', + primary_field_placeholder: 'फ़ील्ड चुनें', + referenced_table_placeholder: 'तालिका चुनें', + referenced_field_placeholder: 'फ़ील्ड चुनें', + no_tables_found: 'कोई तालिकाएँ नहीं मिलीं', + no_fields_found: 'कोई फ़ील्ड्स नहीं मिलीं', + create: 'बनाएँ', + cancel: 'रद्द करें', + }, + + import_database_dialog: { + title: 'वर्तमान आरेख में आयात करें', + override_alert: { + title: 'डेटाबेस आयात करें', + content: { + alert: 'इस आरेख को आयात करने से मौजूदा तालिकाओं और संबंधों पर प्रभाव पड़ेगा।', + new_tables: + '{{newTablesNumber}} नई तालिकाएँ जोड़ी जाएँगी।', + new_relationships: + '{{newRelationshipsNumber}} नए संबंध बनाए जाएँगे।', + tables_override: + '{{tablesOverrideNumber}} तालिकाएँ अधिलेखित की जाएँगी।', + proceed: 'क्या आप जारी रखना चाहते हैं?', + }, + import: 'आयात करें', + cancel: 'रद्द करें', + }, + }, + + export_image_dialog: { + title: 'छवि निर्यात करें', + description: 'निर्यात के लिए स्केल फ़ैक्टर चुनें:', + scale_1x: '1x सामान्य', + scale_2x: '2x (अनुशंसित)', + scale_3x: '3x', + scale_4x: '4x', + cancel: 'रद्द करें', + export: 'निर्यात करें', + }, + + new_table_schema_dialog: { + title: 'स्कीमा चुनें', + description: + 'वर्तमान में कई स्कीमा प्रदर्शित हैं। नई तालिका के लिए एक चुनें।', + cancel: 'रद्द करें', + confirm: 'पुष्टि करें', + }, + + update_table_schema_dialog: { + title: 'स्कीमा बदलें', + description: 'तालिका "{{tableName}}" का स्कीमा अपडेट करें', + cancel: 'रद्द करें', + confirm: 'बदलें', + }, + + star_us_dialog: { + title: 'हमें सुधारने में मदद करें!', + description: + 'क्या आप हमें GitHub पर स्टार देना चाहेंगे? यह बस एक क्लिक की दूरी पर है!', + close: 'अभी नहीं', + confirm: 'बिलकुल!', + }, + + relationship_type: { + one_to_one: 'एक से एक', + one_to_many: 'एक से कई', + many_to_one: 'कई से एक', + many_to_many: 'कई से कई', + }, + + canvas_context_menu: { + new_table: 'नई तालिका', + new_relationship: 'नया संबंध', + }, + + table_node_context_menu: { + edit_table: 'तालिका संपादित करें', + delete_table: 'तालिका हटाएँ', + }, + }, +}; + +export const hiMetadata: LanguageMetadata = { + name: 'Hindi', + code: 'hi', +}; diff --git a/src/pages/editor-page/top-navbar/top-navbar.tsx b/src/pages/editor-page/top-navbar/top-navbar.tsx index 8cd3a4a3..85d40cf5 100644 --- a/src/pages/editor-page/top-navbar/top-navbar.tsx +++ b/src/pages/editor-page/top-navbar/top-navbar.tsx @@ -36,6 +36,7 @@ import { deMetadata } from '@/i18n/locales/de'; import { jaMetadata } from '@/i18n/locales/ja'; import { useLocalConfig } from '@/hooks/use-local-config'; import { frMetadata } from '@/i18n/locales/fr'; +import { hiMetadata } from '@/i18n/locales/hi'; import { DiagramName } from './diagram-name'; import { LastSaved } from './last-saved'; @@ -607,6 +608,17 @@ export const TopNavbar: React.FC = () => { > {deMetadata.name} + + changeLanguage(hiMetadata.code) + } + checked={ + i18n.language === + hiMetadata.code + } + > + {hiMetadata.name} + changeLanguage(jaMetadata.code)