Преглед на файлове

feat: Added hindi translation i18n (#5240)

Yash Parmar преди 1 година
родител
ревизия
6ccde0452a

+ 2 - 1
api/constants/languages.py

@@ -1,6 +1,6 @@
 
 
-languages = ['en-US', 'zh-Hans', 'zh-Hant', 'pt-BR', 'es-ES', 'fr-FR', 'de-DE', 'ja-JP', 'ko-KR', 'ru-RU', 'it-IT', 'uk-UA', 'vi-VN', 'pl-PL']
+languages = ['en-US', 'zh-Hans', 'zh-Hant', 'pt-BR', 'es-ES', 'fr-FR', 'de-DE', 'ja-JP', 'ko-KR', 'ru-RU', 'it-IT', 'uk-UA', 'vi-VN', 'pl-PL', 'hi-IN']
 
 language_timezone_mapping = {
     'en-US': 'America/New_York',
@@ -18,6 +18,7 @@ language_timezone_mapping = {
     'vi-VN': 'Asia/Ho_Chi_Minh',
     'ro-RO': 'Europe/Bucharest',
     'pl-PL': 'Europe/Warsaw',
+    'hi-IN': 'Asia/Kolkata'
 }
 
 

+ 87 - 0
web/i18n/hi-IN/app-annotation.ts

@@ -0,0 +1,87 @@
+const translation = {
+  title: 'एनोटेशन',
+  name: 'एनोटेशन उत्तर',
+  editBy: 'उत्तर संपादित किया गया {{author}} द्वारा',
+  noData: {
+    title: 'कोई एनोटेशन नहीं',
+    description: 'आप ऐप डिबगिंग के दौरान एनोटेशन संपादित कर सकते हैं या उच्च गुणवत्ता वाले उत्तर के लिए यहां बल्क में एनोटेशन आयात कर सकते हैं।',
+  },
+  table: {
+    header: {
+      question: 'प्रश्न',
+      answer: 'उत्तर',
+      createdAt: 'निर्माण तिथि',
+      hits: 'हिट्स',
+      actions: 'क्रियाएँ',
+      addAnnotation: 'एनोटेशन जोड़ें',
+      bulkImport: 'बल्क आयात',
+      bulkExport: 'बल्क निर्यात',
+      clearAll: 'सभी एनोटेशन साफ करें',
+    },
+  },
+  editModal: {
+    title: 'एनोटेशन उत्तर संपादित करें',
+    queryName: 'उपयोगकर्ता प्रश्न',
+    answerName: 'स्टोरीटेलर बॉट',
+    yourAnswer: 'आपका उत्तर',
+    answerPlaceholder: 'यहां अपना उत्तर टाइप करें',
+    yourQuery: 'आपका प्रश्न',
+    queryPlaceholder: 'यहां अपना प्रश्न टाइप करें',
+    removeThisCache: 'इस एनोटेशन को हटाएं',
+    createdAt: 'निर्माण तिथि',
+  },
+  addModal: {
+    title: 'एनोटेशन उत्तर जोड़ें',
+    queryName: 'प्रश्न',
+    answerName: 'उत्तर',
+    answerPlaceholder: 'यहां उत्तर टाइप करें',
+    queryPlaceholder: 'यहां प्रश्न टाइप करें',
+    createNext: 'एक और एनोटेटेड उत्तर जोड़ें',
+  },
+  batchModal: {
+    title: 'बल्क आयात',
+    csvUploadTitle: 'अपनी CSV फ़ाइल यहां खींचें और छोड़ें, या ',
+    browse: 'ब्राउज़ करें',
+    tip: 'CSV फ़ाइल को निम्नलिखित संरचना के अनुरूप होना चाहिए:',
+    question: 'प्रश्न',
+    answer: 'उत्तर',
+    contentTitle: 'खंड सामग्री',
+    content: 'सामग्री',
+    template: 'टेम्पलेट यहां डाउनलोड करें',
+    cancel: 'रद्द करें',
+    run: 'बैच चलाएँ',
+    runError: 'बैच चलाना विफल रहा',
+    processing: 'बैच प्रोसेसिंग में',
+    completed: 'आयात पूर्ण',
+    error: 'आयात त्रुटि',
+    ok: 'ठीक',
+  },
+  errorMessage: {
+    answerRequired: 'उत्तर आवश्यक है',
+    queryRequired: 'प्रश्न आवश्यक है',
+  },
+  viewModal: {
+    annotatedResponse: 'एनोटेशन उत्तर',
+    hitHistory: 'हिट इतिहास',
+    hit: 'हिट',
+    hits: 'हिट्स',
+    noHitHistory: 'कोई हिट इतिहास नहीं',
+  },
+  hitHistoryTable: {
+    query: 'प्रश्न',
+    match: 'मेल',
+    response: 'प्रतिक्रिया',
+    source: 'स्रोत',
+    score: 'स्कोर',
+    time: 'समय',
+  },
+  initSetup: {
+    title: 'एनोटेशन उत्तर प्रारंभिक सेटअप',
+    configTitle: 'एनोटेशन उत्तर सेटअप',
+    confirmBtn: 'सहेजें और सक्षम करें',
+    configConfirmBtn: 'सहेजें',
+  },
+  embeddingModelSwitchTip: 'एनोटेशन टेक्स्ट वेक्टराइजेशन मॉडल, मॉडल बदलने से पुनः एम्बेड किया जाएगा, जिससे अतिरिक्त लागतें उत्पन्न होंगी।',
+}
+
+export default translation

Файловите разлики са ограничени, защото са твърде много
+ 83 - 0
web/i18n/hi-IN/app-api.ts


Файловите разлики са ограничени, защото са твърде много
+ 466 - 0
web/i18n/hi-IN/app-debug.ts


Файловите разлики са ограничени, защото са твърде много
+ 95 - 0
web/i18n/hi-IN/app-log.ts


+ 166 - 0
web/i18n/hi-IN/app-overview.ts

@@ -0,0 +1,166 @@
+const translation = {
+  welcome: {
+    firstStepTip: 'शुरू करने के लिए,',
+    enterKeyTip: 'नीचे अपना OpenAI API कुंजी दर्ज करें',
+    getKeyTip: 'OpenAI डैशबोर्ड से अपनी API कुंजी प्राप्त करें',
+    placeholder: 'आपकी OpenAI API कुंजी (उदा. sk-xxxx)',
+  },
+  apiKeyInfo: {
+    cloud: {
+      trial: {
+        title: 'आप {{providerName}} परीक्षण कोटा का उपयोग कर रहे हैं।',
+        description:
+          'परीक्षण कोटा आपके परीक्षण उपयोग के लिए प्रदान किया गया है। कृपया परीक्षण कोटा कॉल समाप्त होने से पहले अपना स्वयं का मॉडल प्रदाता सेट करें या अतिरिक्त कोटा खरीदें।',
+      },
+      exhausted: {
+        title:
+          'आपका परीक्षण कोटा समाप्त हो गया है, कृपया अपना API कुंजी सेट करें।',
+        description:
+          'आपका परीक्षण कोटा समाप्त हो गया है। कृपया अपना स्वयं का मॉडल प्रदाता सेट करें या अतिरिक्त कोटा खरीदें।',
+      },
+    },
+    selfHost: {
+      title: {
+        row1: 'शुरू करने के लिए,',
+        row2: 'पहले अपना मॉडल प्रदाता सेटअप करें।',
+      },
+    },
+    callTimes: 'कॉल समय',
+    usedToken: 'उपयोग किया गया टोकन',
+    setAPIBtn: 'मॉडल प्रदाता सेटअप पर जाएं',
+    tryCloud: 'या मुफ्त कोटा के साथ Dify का क्लाउड संस्करण आज़माएं',
+  },
+  overview: {
+    title: 'अवलोकन',
+    appInfo: {
+      explanation: 'रेडी-टू-यूज़ AI वेबऐप',
+      accessibleAddress: 'सार्वजनिक URL',
+      preview: 'पूर्वावलोकन',
+      regenerate: 'पुनः उत्पन्न करें',
+      regenerateNotice: 'क्या आप सार्वजनिक URL को पुनः उत्पन्न करना चाहते हैं?',
+      preUseReminder: 'जारी रखने से पहले कृपया वेबऐप सक्षम करें।',
+      settings: {
+        entry: 'सेटिंग्स',
+        title: 'वेबऐप सेटिंग्स',
+        webName: 'वेबऐप नाम',
+        webDesc: 'वेबऐप विवरण',
+        webDescTip:
+          'यह टेक्स्ट क्लाइंट साइड पर प्रदर्शित होगा, जो एप्लिकेशन का उपयोग करने के लिए बुनियादी मार्गदर्शन प्रदान करेगा',
+        webDescPlaceholder: 'वेबऐप का विवरण दर्ज करें',
+        language: 'भाषा',
+        more: {
+          entry: 'अधिक सेटिंग्स दिखाएं',
+          copyright: 'कॉपीराइट',
+          copyRightPlaceholder: 'लेखक या संगठन का नाम दर्ज करें',
+          privacyPolicy: 'गोपनीयता नीति',
+          privacyPolicyPlaceholder: 'गोपनीयता नीति लिंक दर्ज करें',
+          privacyPolicyTip:
+            'आगंतुकों को यह समझने में मदद करता है कि एप्लिकेशन कौन सा डेटा एकत्र करता है, देखें Dify की <privacyPolicyLink>गोपनीयता नीति</privacyPolicyLink>।',
+          customDisclaimer: 'कस्टम अस्वीकरण',
+          customDisclaimerPlaceholder: 'कस्टम अस्वीकरण टेक्स्ट दर्ज करें',
+          customDisclaimerTip:
+            'कस्टम अस्वीकरण टेक्स्ट क्लाइंट साइड पर प्रदर्शित होगा, जो एप्लिकेशन के बारे में अतिरिक्त जानकारी प्रदान करेगा',
+        },
+      },
+      embedded: {
+        entry: 'एम्बेडेड',
+        title: 'वेबसाइट पर एम्बेड करें',
+        explanation: 'अपनी वेबसाइट पर चैट ऐप को एम्बेड करने का तरीका चुनें',
+        iframe:
+          'अपनी वेबसाइट के किसी भी हिस्से पर चैट ऐप जोड़ने के लिए, इस iframe को अपने HTML कोड में जोड़ें।',
+        scripts:
+          'अपनी वेबसाइट के निचले दाएं कोने में चैट ऐप जोड़ने के लिए इस कोड को अपने HTML में जोड़ें।',
+        chromePlugin: 'Dify चैटबॉट क्रोम एक्सटेंशन इंस्टॉल करें',
+        copied: 'कॉपी किया गया',
+        copy: 'कॉपी करें',
+      },
+      qrcode: {
+        title: 'शेयर करने के लिए क्यूआर कोड',
+        scan: 'एप्लिकेशन शेयर स्कैन करें',
+        download: 'क्यूआर कोड डाउनलोड करें',
+      },
+      customize: {
+        way: 'तरीका',
+        entry: 'कस्टमाइज़ करें',
+        title: 'AI वेबऐप कस्टमाइज़ करें',
+        explanation:
+          'आप वेब ऐप के फ्रंटेंड को अपनी स्थिति और शैली की आवश्यकताओं के अनुसार कस्टमाइज़ कर सकते हैं।',
+        way1: {
+          name: 'क्लाइंट कोड को फोर्क करें, उसे संशोधित करें और Vercel पर डिप्लॉय करें (अनुशंसित)',
+          step1: 'क्लाइंट कोड को फोर्क करें और संशोधित करें',
+          step1Tip:
+            'स्रोत कोड को अपने GitHub खाते में फोर्क करने और कोड संशोधित करने के लिए यहां क्लिक करें',
+          step1Operation: 'Dify-WebClient',
+          step2: 'Vercel पर डिप्लॉय करें',
+          step2Tip:
+            'भंडार को Vercel में आयात करने और डिप्लॉय करने के लिए यहां क्लिक करें',
+          step2Operation: 'भंडार आयात करें',
+          step3: 'पर्यावरण वेरिएबल्स कॉन्फ़िगर करें',
+          step3Tip: 'Vercel में निम्नलिखित पर्यावरण वेरिएबल्स जोड़ें',
+        },
+        way2: {
+          name: 'एपीआई को कॉल करने के लिए क्लाइंट-साइड कोड लिखें और इसे सर्वर पर डिप्लॉय करें',
+          operation: 'प्रलेखन',
+        },
+      },
+    },
+    apiInfo: {
+      title: 'बैकएंड सेवा एपीआई',
+      explanation: 'आसानी से अपने एप्लिकेशन में एकीकृत',
+      accessibleAddress: 'सेवा एपीआई एंडपॉइंट',
+      doc: 'एपीआई संदर्भ',
+    },
+    status: {
+      running: 'सेवा में',
+      disable: 'अक्षम करें',
+    },
+  },
+  analysis: {
+    title: 'विश्लेषण',
+    ms: 'मि.से.',
+    tokenPS: 'टोकन/से.',
+    totalMessages: {
+      title: 'कुल संदेश',
+      explanation:
+        'दैनिक एआई इंटरैक्शन की गिनती; प्रॉम्प्ट इंजीनियरिंग/डीबगिंग को शामिल नहीं किया गया।',
+    },
+    activeUsers: {
+      title: 'सक्रिय उपयोगकर्ता',
+      explanation:
+        'AI के साथ प्रश्नोत्तर में संलग्न अद्वितीय उपयोगकर्ता; प्रॉम्प्ट इंजीनियरिंग/डीबगिंग को शामिल नहीं किया गया।',
+    },
+    tokenUsage: {
+      title: 'टोकन उपयोग',
+      explanation:
+        'एप्लिकेशन के लिए भाषा मॉडल के दैनिक टोकन उपयोग को दर्शाता है, जो लागत नियंत्रण उद्देश्यों के लिए उपयोगी है।',
+      consumed: 'उपभोग किया गया',
+    },
+    avgSessionInteractions: {
+      title: 'औसत सत्र इंटरैक्शन',
+      explanation:
+        'निरंतर उपयोगकर्ता-एआई संचार की गिनती; वार्तालाप-आधारित ऐप्स के लिए।',
+    },
+    avgUserInteractions: {
+      title: 'औसत उपयोगकर्ता इंटरैक्शन',
+      explanation:
+        'उपयोगकर्ताओं के दैनिक उपयोग की आवृत्ति को दर्शाता है। यह मीट्रिक उपयोगकर्ता स्थिरता को दर्शाता है।',
+    },
+    userSatisfactionRate: {
+      title: 'उपयोगकर्ता संतोष दर',
+      explanation:
+        'प्रति 1,000 संदेशों में से पसंदों की संख्या। यह उन उत्तरों के अनुपात को इंगित करता है जिनसे उपयोगकर्ता अत्यधिक संतुष्ट हैं।',
+    },
+    avgResponseTime: {
+      title: 'औसत प्रतिक्रिया समय',
+      explanation:
+        'टेक्स्ट-आधारित ऐप्स के लिए एआई द्वारा संसाधित/प्रतिक्रिया समय (मि.से.)।',
+    },
+    tps: {
+      title: 'टोकन आउटपुट स्पीड',
+      explanation:
+        'LLM के प्रदर्शन को मापें। अनुरोध के शुरू होने से आउटपुट पूरा होने तक LLM के टोकन आउटपुट गति की गणना करें।',
+    },
+  },
+}
+
+export default translation

Файловите разлики са ограничени, защото са твърде много
+ 90 - 0
web/i18n/hi-IN/app.ts


+ 131 - 0
web/i18n/hi-IN/billing.ts

@@ -0,0 +1,131 @@
+const translation = {
+  currentPlan: 'वर्तमान योजना',
+  upgradeBtn: {
+    plain: 'योजना अपग्रेड करें',
+    encourage: 'अभी अपग्रेड करें',
+    encourageShort: 'अपग्रेड करें',
+  },
+  viewBilling: 'बिलिंग और सब्सक्रिप्शन प्रबंधित करें',
+  buyPermissionDeniedTip:
+    'सब्सक्राइब करने के लिए कृपया अपने एंटरप्राइज़ व्यवस्थापक से संपर्क करें',
+  plansCommon: {
+    title: 'आपके लिए सही योजना चुनें',
+    yearlyTip: 'वार्षिक सब्सक्राइब करने पर 2 महीने मुफ्त पाएं!',
+    mostPopular: 'सबसे लोकप्रिय',
+    planRange: {
+      monthly: 'मासिक',
+      yearly: 'वार्षिक',
+    },
+    month: 'महीना',
+    year: 'साल',
+    save: 'बचत करें ',
+    free: 'मुफ्त',
+    currentPlan: 'वर्तमान योजना',
+    contractSales: 'बिक्री से संपर्क करें',
+    contractOwner: 'टीम प्रबंधक से संपर्क करें',
+    startForFree: 'मुफ्त में शुरू करें',
+    getStartedWith: 'इसके साथ शुरू करें ',
+    contactSales: 'बिक्री से संपर्क करें',
+    talkToSales: 'बिक्री से बात करें',
+    modelProviders: 'मॉडल प्रदाता',
+    teamMembers: 'टीम के सदस्य',
+    annotationQuota: 'एनोटेशन कोटा',
+    buildApps: 'ऐप्स बनाएं',
+    vectorSpace: 'वेक्टर स्पेस',
+    vectorSpaceBillingTooltip:
+      'प्रत्येक 1MB लगभग 1.2 मिलियन वर्णों के वेक्टराइज्ड डेटा को संग्रहीत कर सकता है (OpenAI एम्बेडिंग का उपयोग करके अनुमानित, मॉडल में भिन्नता होती है)।',
+    vectorSpaceTooltip:
+      'वेक्टर स्पेस वह दीर्घकालिक स्मृति प्रणाली है जिसकी आवश्यकता LLMs को आपके डेटा को समझने के लिए होती है।',
+    documentsUploadQuota: 'दस्तावेज़ अपलोड कोटा',
+    documentProcessingPriority: 'दस्तावेज़ प्रसंस्करण प्राथमिकता',
+    documentProcessingPriorityTip:
+      'उच्च दस्तावेज़ प्रसंस्करण प्राथमिकता के लिए, कृपया अपनी योजना अपग्रेड करें।',
+    documentProcessingPriorityUpgrade:
+      'तेजी से गति पर उच्च सटीकता के साथ अधिक डेटा संसाधित करें।',
+    priority: {
+      'standard': 'मानक',
+      'priority': 'प्राथमिकता',
+      'top-priority': 'शीर्ष प्राथमिकता',
+    },
+    logsHistory: 'लॉग इतिहास',
+    customTools: 'कस्टम टूल्स',
+    unavailable: 'अनुपलब्ध',
+    days: 'दिन',
+    unlimited: 'असीमित',
+    support: 'समर्थन',
+    supportItems: {
+      communityForums: 'समुदाय फोरम',
+      emailSupport: 'ईमेल समर्थन',
+      priorityEmail: 'प्राथमिकता ईमेल और चैट समर्थन',
+      logoChange: 'लोगो परिवर्तन',
+      SSOAuthentication: 'SSO प्रमाणीकरण',
+      personalizedSupport: 'व्यक्तिगत समर्थन',
+      dedicatedAPISupport: 'समर्पित API समर्थन',
+      customIntegration: 'कस्टम एकीकरण और समर्थन',
+      ragAPIRequest: 'RAG API अनुरोध',
+      bulkUpload: 'दस्तावेजों का थोक अपलोड',
+      agentMode: 'एजेंट मोड',
+      workflow: 'कार्यप्रवाह',
+      llmLoadingBalancing: 'LLM लोड बैलेंसिंग',
+      llmLoadingBalancingTooltip:
+        'मॉडल्स में कई API कुंजियाँ जोड़ें, प्रभावी रूप से API दर सीमाओं को बायपास करें।',
+    },
+    comingSoon: 'जल्द आ रहा है',
+    member: 'सदस्य',
+    memberAfter: 'सदस्य',
+    messageRequest: {
+      title: 'संदेश क्रेडिट्स',
+      tooltip:
+        'विभिन्न योजनाओं के लिए संदेश आह्वान कोटा OpenAI मॉडलों का उपयोग करके (gpt4 को छोड़कर)। सीमा से अधिक संदेश आपके OpenAI API कुंजी का उपयोग करेंगे।',
+    },
+    annotatedResponse: {
+      title: 'एनोटेशन कोटा सीमाएं',
+      tooltip:
+        'प्रतिक्रियाओं का मैन्युअल संपादन और एनोटेशन ऐप्स के लिए अनुकूलन योग्य उच्च-गुणवत्ता वाले प्रश्न-उत्तर क्षमताएं प्रदान करता है। (केवल चैट ऐप्स में लागू)',
+    },
+    ragAPIRequestTooltip:
+      'Dify की केवल ज्ञान आधार प्रसंस्करण क्षमताओं को आह्वान करने वाले API कॉल की संख्या को संदर्भित करता है।',
+    receiptInfo:
+      'केवल टीम के मालिक और टीम एडमिन सब्सक्राइब कर सकते हैं और बिलिंग जानकारी देख सकते हैं',
+  },
+  plans: {
+    sandbox: {
+      name: 'सैंडबॉक्स',
+      description: '200 बार GPT मुफ्त ट्रायल',
+      includesTitle: 'शामिल हैं:',
+    },
+    professional: {
+      name: 'प्रोफेशनल',
+      description:
+        'व्यक्तियों और छोटे टीमों के लिए अधिक शक्ति सस्ती दर पर खोलें।',
+      includesTitle: 'मुफ्त योजना में सब कुछ, साथ में:',
+    },
+    team: {
+      name: 'टीम',
+      description:
+        'बिना सीमा के सहयोग करें और शीर्ष स्तरीय प्रदर्शन का आनंद लें।',
+      includesTitle: 'प्रोफेशनल योजना में सब कुछ, साथ में:',
+    },
+    enterprise: {
+      name: 'एंटरप्राइज़',
+      description:
+        'बड़े पैमाने पर मिशन-क्रिटिकल सिस्टम के लिए पूर्ण क्षमताएं और समर्थन प्राप्त करें।',
+      includesTitle: 'टीम योजना में सब कुछ, साथ में:',
+    },
+  },
+  vectorSpace: {
+    fullTip: 'वेक्टर स्पेस पूर्ण है।',
+    fullSolution: 'अधिक स्थान प्राप्त करने के लिए अपनी योजना अपग्रेड करें।',
+  },
+  apps: {
+    fullTipLine1: 'अधिक ऐप्स बनाने के लिए',
+    fullTipLine2: 'अपनी योजना अपग्रेड करें।',
+  },
+  annotatedResponse: {
+    fullTipLine1: 'अधिक बातचीत को एनोटेट करने के लिए',
+    fullTipLine2: 'अपनी योजना अपग्रेड करें।',
+    quotaTitle: 'एनोटेशन उत्तर कोटा',
+  },
+}
+
+export default translation

Файловите разлики са ограничени, защото са твърде много
+ 587 - 0
web/i18n/hi-IN/common.ts


+ 30 - 0
web/i18n/hi-IN/custom.ts

@@ -0,0 +1,30 @@
+const translation = {
+  custom: 'व्यक्तिकरण',
+  upgradeTip: {
+    prefix: 'अपग्रेड करें अपने प्लान को',
+    suffix: 'स्वयं अपना ब्रांड चुनना।',
+  },
+  webapp: {
+    title: 'WebApp का ब्रांड व्यक्तिकरण करें',
+    removeBrand: 'पावर्ड द्वारा डिफी हटाएं',
+    changeLogo: 'पावर्ड द्वारा ब्रांड छवि बदले',
+    changeLogoTip: 'SVG या PNG प्रारूप के साथ न्यूनतम आकार 40x40px होना चाहिए',
+  },
+  app: {
+    title: 'हेडर का ब्रांड व्यक्तिकरण करें',
+    changeLogoTip: 'SVG या PNG प्रारूप के साथ न्यूनतम आकार 80x80px होना चाहिए',
+  },
+  upload: 'चढ़ाएं',
+  uploading: 'चढ़ाएं...',
+  uploadedFail: 'चित्र अपलोड असफल है, कृपया फिर से अपलोड करें।',
+  change: 'बदलें',
+  apply: 'लगाएं',
+  restore: 'डिफ़ॉल्ट रिकवरी',
+  customize: {
+    contactUs: ' हमसे संपर्क करें ',
+    prefix: 'अप्लीकेशन में ब्रांड लोगो बदलने के लिए, कृपया',
+    suffix: ' Enterprise संस्करण में अपग्रेड करें.',
+  },
+}
+
+export default translation

Файловите разлики са ограничени, защото са твърде много
+ 182 - 0
web/i18n/hi-IN/dataset-creation.ts


+ 353 - 0
web/i18n/hi-IN/dataset-documents.ts

@@ -0,0 +1,353 @@
+const translation = {
+  list: {
+    title: 'दस्तावेज़',
+    desc: 'यहाँ ज्ञान की सभी फाइलें दिखाई गई हैं, और पूरे ज्ञान को डिफी संदर्भों से जोड़ा जा सकता है या चैट प्लगइन के माध्यम से अनुक्रमित किया जा सकता है।',
+    addFile: 'फाइल जोड़ें',
+    addPages: 'पृष्ठ जोड़ें',
+    addUrl: 'URL जोड़ें',
+    table: {
+      header: {
+        fileName: 'फाइल का नाम',
+        words: 'शब्द',
+        hitCount: 'पुनर्प्राप्ति गणना',
+        uploadTime: 'अपलोड का समय',
+        status: 'स्थिति',
+        action: 'क्रिया',
+      },
+      rename: 'नाम बदलें',
+      name: 'नाम',
+    },
+    action: {
+      uploadFile: 'नई फाइल अपलोड करें',
+      settings: 'खंड सेटिंग्स',
+      addButton: 'खंड जोड़ें',
+      add: 'खंड जोड़ें',
+      batchAdd: 'बैच में जोड़ें',
+      archive: 'संग्रहीत करें',
+      unarchive: 'संग्रह से बाहर करें',
+      delete: 'हटाएँ',
+      enableWarning: 'संग्रहित फाइल को सक्रिय नहीं किया जा सकता',
+      sync: 'सिंक्रोनाइज़ करें',
+    },
+    index: {
+      enable: 'सक्रिय करें',
+      disable: 'निष्क्रिय करें',
+      all: 'सभी',
+      enableTip: 'फाइल को अनुक्रमित किया जा सकता है',
+      disableTip: 'फाइल को अनुक्रमित नहीं किया जा सकता',
+    },
+    status: {
+      queuing: 'पंक्तिबद्ध',
+      indexing: 'अनुक्रमण',
+      paused: 'रुका हुआ',
+      error: 'त्रुटि',
+      available: 'उपलब्ध',
+      enabled: 'सक्रिय',
+      disabled: 'निष्क्रिय',
+      archived: 'संग्रहित',
+    },
+    empty: {
+      title: 'अभी तक कोई दस्तावेज़ नहीं है',
+      upload: {
+        tip: 'आप फाइलें अपलोड कर सकते हैं, वेबसाइट से, या वेब ऐप्स जैसे की नोशन, गिटहब आदि से सिंक्रोनाइज़ कर सकते हैं।',
+      },
+      sync: {
+        tip: 'डिफी आपके नोशन से नियमित रूप से फाइलें डाउनलोड करेगा और प्रसंस्करण पूरा करेगा।',
+      },
+    },
+    delete: {
+      title: 'क्या आप सुनिश्चित हैं मिटाना?',
+      content:
+        'यदि आप बाद में प्रसंस्करण फिर से शुरू करना चाहते हैं, तो आप वहीं से शुरू करेंगे जहाँ आपने छोड़ा था',
+    },
+    batchModal: {
+      title: 'खंड जोड़ने के लिए बैच',
+      csvUploadTitle: 'अपनी CSV फाइल यहाँ खींचें और छोड़ें, या ',
+      browse: 'ब्राउज़ करें',
+      tip: 'CSV फाइल निम्नलिखित संरचना का अनुसरण करनी चाहिए:',
+      question: 'प्रश्न',
+      answer: 'उत्तर',
+      contentTitle: 'खंड सामग्री',
+      content: 'सामग्री',
+      template: 'टेम्पलेट यहाँ डाउनलोड करें',
+      cancel: 'रद्द करें',
+      run: 'बैच चलाएं',
+      runError: 'बैच चलाने में विफल',
+      processing: 'बैच प्रसंस्करण में',
+      completed: 'आयात पूरा हुआ',
+      error: 'आयात त्रुटि',
+      ok: 'ठीक है',
+    },
+  },
+  metadata: {
+    title: 'मेटाडेटा',
+    desc: 'दस्तावेजों के लिए मेटाडेटा लेबलिंग से AI को समय पर उन तक पहुँचने में मदद मिलती है और उपयोगकर्ताओं के लिए संदर्भों का स्रोत प्रदर्शित होता है।',
+    dateTimeFormat: 'MMMM D, YYYY hh:mm A',
+    docTypeSelectTitle: 'कृपया दस्तावेज़ प्रकार चुनें',
+    docTypeChangeTitle: 'दस्तावेज़ प्रकार बदलें',
+    docTypeSelectWarning:
+      'यदि दस्तावेज़ प्रकार बदला जाता है, तो अब भरी गई मेटाडेटा संरक्षित नहीं रहेगी',
+    firstMetaAction: 'चलिए शुरू करते हैं',
+    placeholder: {
+      add: 'जोड़ें ',
+      select: 'चुनें ',
+    },
+    source: {
+      upload_file: 'फाइल अपलोड करें',
+      notion: 'नोशन से सिंक करें',
+      github: 'गिटहब से सिंक करें',
+    },
+    type: {
+      book: 'पुस्तक',
+      webPage: 'वेब पृष्ठ',
+      paper: 'पेपर',
+      socialMediaPost: 'सोशल मीडिया पोस्ट',
+      personalDocument: 'व्यक्तिगत दस्तावेज़',
+      businessDocument: 'व्यापारिक दस्तावेज़',
+      IMChat: 'आईएम चैट',
+      wikipediaEntry: 'विकिपीडिया प्रविष्टि',
+      notion: 'नोशन से सिंक करें',
+      github: 'गिटहब से सिंक करें',
+      technicalParameters: 'तकनीकी पैरामीटर',
+    },
+    field: {
+      processRule: {
+        processDoc: 'दस्तावेज़ प्रक्रिया',
+        segmentRule: 'खंड नियम',
+        segmentLength: 'खंडों की लंबाई',
+        processClean: 'पाठ प्रक्रिया सफाई',
+      },
+      book: {
+        title: 'शीर्षक',
+        language: 'भाषा',
+        author: 'लेखक',
+        publisher: 'प्रकाशक',
+        publicationDate: 'प्रकाशन तिथि',
+        ISBN: 'ISBN',
+        category: 'श्रेणी',
+      },
+      webPage: {
+        title: 'शीर्षक',
+        url: 'URL',
+        language: 'भाषा',
+        authorPublisher: 'लेखक/प्रकाशक',
+        publishDate: 'प्रकाशन तिथि',
+        topicsKeywords: 'विषय/कीवर्ड्स',
+        description: 'विवरण',
+      },
+      paper: {
+        title: 'शीर्षक',
+        language: 'भाषा',
+        author: 'लेखक',
+        publishDate: 'प्रकाशन तिथि',
+        journalConferenceName: 'जर्नल/सम्मेलन का नाम',
+        volumeIssuePage: 'खंड/अंक/पृष्ठ',
+        DOI: 'DOI',
+        topicsKeywords: 'विषय/कीवर्ड्स',
+        abstract: 'सार',
+      },
+      socialMediaPost: {
+        platform: 'प्लेटफार्म',
+        authorUsername: 'लेखक/यूज़रनेम',
+        publishDate: 'प्रकाशन तिथि',
+        postURL: 'पोस्ट URL',
+        topicsTags: 'विषय/टैग',
+      },
+      personalDocument: {
+        title: 'शीर्षक',
+        author: 'लेखक',
+        creationDate: 'निर्माण तिथि',
+        lastModifiedDate: 'अंतिम संशोधित तिथि',
+        documentType: 'दस्तावेज़ प्रकार',
+        tagsCategory: 'टैग/श्रेणी',
+      },
+      businessDocument: {
+        title: 'शीर्षक',
+        author: 'लेखक',
+        creationDate: 'निर्माण तिथि',
+        lastModifiedDate: 'अंतिम संशोधित तिथि',
+        documentType: 'दस्तावेज़ प्रकार',
+        departmentTeam: 'विभाग/टीम',
+      },
+      IMChat: {
+        chatPlatform: 'चैट प्लेटफॉर्म',
+        chatPartiesGroupName: 'चैट पार्टियाँ/समूह का नाम',
+        participants: 'प्रतिभागी',
+        startDate: 'प्रारंभ तिथि',
+        endDate: 'समाप्ति तिथि',
+        topicsKeywords: 'विषय/कीवर्ड्स',
+        fileType: 'फाइल प्रकार',
+      },
+      wikipediaEntry: {
+        title: 'शीर्षक',
+        language: 'भाषा',
+        webpageURL: 'वेबपेज URL',
+        editorContributor: 'संपादक/योगदानकर्ता',
+        lastEditDate: 'अंतिम संपादन तिथि',
+        summaryIntroduction: 'सार/परिचय',
+      },
+      notion: {
+        title: 'शीर्षक',
+        language: 'भाषा',
+        author: 'लेखक',
+        createdTime: 'निर्मित समय',
+        lastModifiedTime: 'अंतिम संशोधित समय',
+        url: 'URL',
+        tag: 'टैग',
+        description: 'विवरण',
+      },
+      github: {
+        repoName: 'रिपो नाम',
+        repoDesc: 'रिपो विवरण',
+        repoOwner: 'रिपो मालिक',
+        fileName: 'फाइल का नाम',
+        filePath: 'फाइल पथ',
+        programmingLang: 'प्रोग्रामिंग भाषा',
+        url: 'URL',
+        license: 'लाइसेंस',
+        lastCommitTime: 'अंतिम कमिट समय',
+        lastCommitAuthor: 'अंतिम कमिट लेखक',
+      },
+      originInfo: {
+        originalFilename: 'मूल फाइल का नाम',
+        originalFileSize: 'मूल फाइल का आकार',
+        uploadDate: 'अपलोड तिथि',
+        lastUpdateDate: 'अंतिम अद्यतन तिथि',
+        source: 'स्रोत',
+      },
+      technicalParameters: {
+        segmentSpecification: 'खंड विनिर्देश',
+        segmentLength: 'खंडों की लंबाई',
+        avgParagraphLength: 'औसत पैराग्राफ लंबाई',
+        paragraphs: 'पैराग्राफ',
+        hitCount: 'पुनर्प्राप्ति गणना',
+        embeddingTime: 'एम्बेडिंग समय',
+        embeddedSpend: 'एम्बेडेड खर्च',
+      },
+    },
+    languageMap: {
+      zh: 'चीनी',
+      en: 'अंग्रेज़ी',
+      es: 'स्पेनिश',
+      fr: 'फ्रेंच',
+      de: 'जर्मन',
+      ja: 'जापानी',
+      ko: 'कोरियाई',
+      ru: 'रूसी',
+      ar: 'अरबी',
+      pt: 'पुर्तगाली',
+      it: 'इतालवी',
+      nl: 'डच',
+      pl: 'पोलिश',
+      sv: 'स्वीडिश',
+      tr: 'तुर्की',
+      he: 'हिब्रू',
+      hi: 'हिंदी',
+      da: 'डेनिश',
+      fi: 'फिनिश',
+      no: 'नॉर्वेजियन',
+      hu: 'हंगेरियन',
+      el: 'ग्रीक',
+      cs: 'चेक',
+      th: 'थाई',
+      id: 'इंडोनेशियाई',
+    },
+    categoryMap: {
+      book: {
+        fiction: 'काल्पनिक',
+        biography: 'जीवनी',
+        history: 'इतिहास',
+        science: 'विज्ञान',
+        technology: 'प्रौद्योगिकी',
+        education: 'शिक्षा',
+        philosophy: 'दर्शन',
+        religion: 'धर्म',
+        socialSciences: 'सामाजिक विज्ञान',
+        art: 'कला',
+        travel: 'यात्रा',
+        health: 'स्वास्थ्य',
+        selfHelp: 'आत्म-सहायता',
+        businessEconomics: 'व्यापार अर्थशास्त्र',
+        cooking: 'खाना पकाना',
+        childrenYoungAdults: 'बच्चे और युवा वयस्क',
+        comicsGraphicNovels: 'कॉमिक्स और ग्राफिक उपन्यास',
+        poetry: 'कविता',
+        drama: 'नाटक',
+        other: 'अन्य',
+      },
+      personalDoc: {
+        notes: 'नोट्स',
+        blogDraft: 'ब्लॉग ड्राफ्ट',
+        diary: 'डायरी',
+        researchReport: 'अनुसंधान रिपोर्ट',
+        bookExcerpt: 'पुस्तक अंश',
+        schedule: 'अनुसूची',
+        list: 'सूची',
+        projectOverview: 'परियोजना अवलोकन',
+        photoCollection: 'फोटो संग्रह',
+        creativeWriting: 'रचनात्मक लेखन',
+        codeSnippet: 'कोड स्निपेट',
+        designDraft: 'डिज़ाइन ड्राफ्ट',
+        personalResume: 'व्यक्तिगत रिज्यूमे',
+        other: 'अन्य',
+      },
+      businessDoc: {
+        meetingMinutes: 'बैठक के मिनट',
+        researchReport: 'अनुसंधान रिपोर्ट',
+        proposal: 'प्रस्ताव',
+        employeeHandbook: 'कर्मचारी हैंडबुक',
+        trainingMaterials: 'प्रशिक्षण सामग्री',
+        requirementsDocument: 'आवश्यकता दस्तावेज़',
+        designDocument: 'डिज़ाइन दस्तावेज़',
+        productSpecification: 'उत्पाद विनिर्देश',
+        financialReport: 'वित्तीय रिपोर्ट',
+        marketAnalysis: 'बाजार विश्लेषण',
+        projectPlan: 'परियोजना योजना',
+        teamStructure: 'टीम संरचना',
+        policiesProcedures: 'नीतियाँ और प्रक्रियाएँ',
+        contractsAgreements: 'अनुबंध और समझौते',
+        emailCorrespondence: 'ईमेल पत्राचार',
+        other: 'अन्य',
+      },
+    },
+  },
+  embedding: {
+    processing: 'एम्बेडिंग प्रक्रिया...',
+    paused: 'एम्बेडिंग रुकी हुई',
+    completed: 'एम्बेडिंग पूरी हो गई',
+    error: 'एम्बेडिंग त्रुटि',
+    docName: 'प्रसंस्करण दस्तावेज़',
+    mode: 'खंडीकरण नियम',
+    segmentLength: 'खंडों की लंबाई',
+    textCleaning: 'पाठ पूर्व-परिभाषा और सफाई',
+    segments: 'पैराग्राफ',
+    highQuality: 'उच्च गुणवत्ता मोड',
+    economy: 'अर्थव्यवस्था मोड',
+    estimate: 'अनुमानित उपभोग',
+    stop: 'प्रक्रिया रोकें',
+    resume: 'प्रक्रिया फिर से शुरू करें',
+    automatic: 'स्वचालित',
+    custom: 'अनुकूलित',
+    previewTip: 'पैराग्राफ पूर्वावलोकन एम्बेडिंग पूरी होने के बाद उपलब्ध होगा',
+  },
+  segment: {
+    paragraphs: 'पैराग्राफ',
+    keywords: 'कीवर्ड',
+    addKeyWord: 'कीवर्ड जोड़ें',
+    keywordError: 'कीवर्ड की अधिकतम लंबाई 20 अक्षर हो सकती है',
+    characters: 'अक्षर',
+    hitCount: 'पुनर्प्राप्ति गणना',
+    vectorHash: 'वेक्टर हैश: ',
+    questionPlaceholder: 'यहाँ प्रश्न जोड़ें',
+    questionEmpty: 'प्रश्न खाली नहीं हो सकता',
+    answerPlaceholder: 'यहाँ उत्तर जोड़ें',
+    answerEmpty: 'उत्तर खाली नहीं हो सकता',
+    contentPlaceholder: 'यहाँ सामग्री जोड़ें',
+    contentEmpty: 'सामग्री खाली नहीं हो सकती',
+    newTextSegment: 'नया पाठ खंड',
+    newQaSegment: 'नया Q&A खंड',
+    delete: 'इस खंड को हटाएँ ?',
+  },
+}
+
+export default translation

+ 28 - 0
web/i18n/hi-IN/dataset-hit-testing.ts

@@ -0,0 +1,28 @@
+const translation = {
+  title: 'पुनर्प्राप्ति परीक्षण',
+  desc: 'दिए गए प्रश्न पाठ के आधार पर ज्ञान की प्रभावशीलता का परीक्षण करें।',
+  dateTimeFormat: 'MM/DD/YYYY hh:mm A',
+  recents: 'हाल के',
+  table: {
+    header: {
+      source: 'स्रोत',
+      text: 'पाठ',
+      time: 'समय',
+    },
+  },
+  input: {
+    title: 'स्रोत पाठ',
+    placeholder: 'कृपया एक पाठ दर्ज करें, एक छोटा वाक्यांश सुझाया गया है।',
+    countWarning: 'अधिकतम 200 अक्षर।',
+    indexWarning: 'केवल उच्च गुणवत्ता वाला ज्ञान।',
+    testing: 'परीक्षण कर रहा है',
+  },
+  hit: {
+    title: 'पुनर्प्राप्ति अनुच्छेद',
+    emptyTip: 'पुनर्प्राप्ति परीक्षण के परिणाम यहां दिखाई देंगे',
+  },
+  noRecentTip: 'यहां कोई हाल के प्रश्न परिणाम नहीं हैं',
+  viewChart: 'वेक्टर चार्ट देखें',
+}
+
+export default translation

+ 38 - 0
web/i18n/hi-IN/dataset-settings.ts

@@ -0,0 +1,38 @@
+const translation = {
+  title: 'ज्ञान सेटिंग्ज',
+  desc: 'यहां आप ज्ञान की संपत्ति और कार्य प्रक्रियाओं को modify कर सकते हैं。',
+  form: {
+    name: 'ज्ञान नाम',
+    namePlaceholder: 'कृपया ज्ञान नाम दर्ज करें',
+    nameError: 'नाम रिक्त नहीं होना चाहिए',
+    desc: 'ज्ञान विवरण',
+    descInfo:
+      'कृपया स्पष्ट साक्षर विवरण लिखें जिससे AI को ज्ञान के निहितार्थों की पहचान करने में मदद मिले। यदि शून्य है, Dify आपके पूर्वानुमान का उपयोग करेगा।',
+    descPlaceholder:
+      'इस ज्ञान के सामग्रियां क्या हैं? एक विस्तृत विवरण को AI को निहितार्थों की पहचान करने में मदद मिले। यदि शून्य है, Dify आपके पूर्वानुमान का उपयोग करेगा।',
+    descWrite: 'कैसे अच्छा ज्ञान विवरण लिखना है?',
+    permissions: 'अनुमतियां',
+    permissionsOnlyMe: 'मेरे लिए ही',
+    permissionsAllMember: 'सभी टीम सदस्यों के लिए',
+    indexMethod: 'सूचीकरण प्रक्रिया',
+    indexMethodHighQuality: ' उच्च गुणवत्ता',
+    indexMethodHighQualityTip:
+      'ओपनएआई के एम्बेडिंग इंटरफ़ेस का उपयोग करें ताकि प्रयोक्ताओं की मांगों की सटीकता बढ़ाई जा सके।',
+    indexMethodEconomy: 'आर्थिक',
+    indexMethodEconomyTip:
+      'ऑफ़लाइन वेक्टर इंजन, कीवर्ड इंडेक्स आदि का उपयोग करें ताकि टोकनों की बचत हो।',
+    embeddingModel: 'एम्बेडिंग मॉडल',
+    embeddingModelTip: 'एम्बेडिंग मॉडल को बदलें, कृपया ',
+    embeddingModelTipLink: 'सेटिंग्ज',
+    retrievalSetting: {
+      title: 'प्राप्ति सेटिंग्ज',
+      learnMore: 'और अधिक सीखना',
+      description: 'प्राप्ति पद्धति के बारे में。',
+      longDescription:
+        'प्राप्ति पद्धति के बारे में, आप इसे किसी भी समय ज्ञान सेटिंग्ज में बदल सकते हैं।',
+    },
+    save: 'सेवना',
+  },
+}
+
+export default translation

Файловите разлики са ограничени, защото са твърде много
+ 56 - 0
web/i18n/hi-IN/dataset.ts


+ 42 - 0
web/i18n/hi-IN/explore.ts

@@ -0,0 +1,42 @@
+const translation = {
+  title: 'अन्वेषण करें',
+  sidebar: {
+    discovery: 'खोज',
+    chat: 'चैट',
+    workspace: 'कार्यक्षेत्र',
+    action: {
+      pin: 'पिन करें',
+      unpin: 'पिन हटाएँ',
+      rename: 'नाम बदलें',
+      delete: 'हटाएं',
+    },
+    delete: {
+      title: 'ऐप हटाएं',
+      content: 'क्या आप वाकई इस ऐप को हटाना चाहते हैं?',
+    },
+  },
+  apps: {
+    title: 'डिफ़ी द्वारा ऐप्स का अन्वेषण करें',
+    description:
+      'इन टेम्प्लेट ऐप्स का तुरंत उपयोग करें या टेम्प्लेट्स के आधार पर अपने स्वयं के ऐप्स को कस्टमाइज़ करें।',
+    allCategories: 'अनुशंसित',
+  },
+  appCard: {
+    addToWorkspace: 'कार्यक्षेत्र में जोड़ें',
+    customize: 'अनुकूलित करें',
+  },
+  appCustomize: {
+    title: '{{name}} से ऐप बनाएँ',
+    subTitle: 'ऐप आइकन और नाम',
+    nameRequired: 'ऐप का नाम आवश्यक है',
+  },
+  category: {
+    Assistant: 'सहायक',
+    Writing: 'लेखन',
+    Translate: 'अनुवाद',
+    Programming: 'प्रोग्रामिंग',
+    HR: 'मानव संसाधन',
+  },
+}
+
+export default translation

+ 4 - 0
web/i18n/hi-IN/layout.ts

@@ -0,0 +1,4 @@
+const translation = {
+}
+
+export default translation

+ 67 - 0
web/i18n/hi-IN/login.ts

@@ -0,0 +1,67 @@
+const translation = {
+  pageTitle: 'अरे, चलिए शुरू करते हैं!👋',
+  welcome: 'Dify में आपका स्वागत है, कृपया जारी रखने के लिए लॉग इन करें।',
+  email: 'ईमेल पता',
+  emailPlaceholder: 'आपका ईमेल',
+  password: 'पासवर्ड',
+  passwordPlaceholder: 'आपका पासवर्ड',
+  name: 'उपयोगकर्ता नाम',
+  namePlaceholder: 'आपका उपयोगकर्ता नाम',
+  forget: 'क्या आप पासवर्ड भूल गए?',
+  signBtn: 'साइन इन करें',
+  sso: 'SSO के साथ जारी रखें',
+  installBtn: 'सेट अप करें',
+  setAdminAccount: 'एडमिन खाता सेट कर रहे हैं',
+  setAdminAccountDesc:
+    'एडमिन खाते के लिए अधिकतम विशेषाधिकार, जिसका उपयोग एप्लिकेशन बनाने और LLM प्रदाताओं को प्रबंधित करने के लिए किया जा सकता है, आदि।',
+  createAndSignIn: 'बनाएं और साइन इन करें',
+  oneMoreStep: 'एक और कदम',
+  createSample: 'इस जानकारी के आधार पर, हम आपके लिए नमूना एप्लिकेशन बनाएंगे',
+  invitationCode: 'निमंत्रण कोड',
+  invitationCodePlaceholder: 'आपका निमंत्रण कोड',
+  interfaceLanguage: 'इंटरफेस भाषा',
+  timezone: 'समय क्षेत्र',
+  go: 'Dify पर जाएं',
+  sendUsMail:
+    'हमें अपना परिचय ईमेल करें, और हम निमंत्रण अनुरोध को संभाल लेंगे।',
+  acceptPP: 'मैंने गोपनीयता नीति पढ़ी है और स्वीकार करता हूं',
+  reset: 'कृपया अपना पासवर्ड रीसेट करने के लिए निम्नलिखित कमांड चलाएं',
+  withGitHub: 'GitHub के साथ जारी रखें',
+  withGoogle: 'Google के साथ जारी रखें',
+  rightTitle: 'LLM की पूरी क्षमता को अनलॉक करें',
+  rightDesc:
+    'दृश्य रूप से आकर्षक, संचालन योग्य और सुधार योग्य AI एप्लिकेशन को आसानी से बनाएं।',
+  tos: 'सेवा की शर्तें',
+  pp: 'गोपनीयता नीति',
+  tosDesc: 'साइन अप करके, आप हमारी सहमति देते हैं',
+  goToInit:
+    'यदि आपने खाता प्रारंभ नहीं किया है, तो कृपया प्रारंभिक पृष्ठ पर जाएं',
+  donthave: 'नहीं है?',
+  invalidInvitationCode: 'अवैध निमंत्रण कोड',
+  accountAlreadyInited: 'खाता पहले से प्रारंभ किया गया है',
+  error: {
+    emailEmpty: 'ईमेल पता आवश्यक है',
+    emailInValid: 'कृपया एक मान्य ईमेल पता दर्ज करें',
+    nameEmpty: 'नाम आवश्यक है',
+    passwordEmpty: 'पासवर्ड आवश्यक है',
+    passwordLengthInValid: 'पासवर्ड कम से कम 8 वर्णों का होना चाहिए',
+    passwordInvalid:
+      'पासवर्ड में अक्षर और अंक होने चाहिए, और लंबाई 8 से अधिक होनी चाहिए',
+  },
+  license: {
+    tip: 'Dify Community Edition शुरू करने से पहले, GitHub पर',
+    link: 'ओपन-सोर्स लाइसेंस',
+  },
+  join: 'शामिल हों',
+  joinTipStart: 'आपको आमंत्रित करते हैं',
+  joinTipEnd: 'टीम पर Dify',
+  invalid: 'लिंक समाप्त हो गया है',
+  explore: 'Dify का अन्वेषण करें',
+  activatedTipStart: 'आप शामिल हो गए हैं',
+  activatedTipEnd: 'टीम',
+  activated: 'अब साइन इन करें',
+  adminInitPassword: 'एडमिन प्रारंभिक पासवर्ड',
+  validate: 'सत्यापित करें',
+}
+
+export default translation

+ 3 - 0
web/i18n/hi-IN/register.ts

@@ -0,0 +1,3 @@
+const translation = {}
+
+export default translation

+ 29 - 0
web/i18n/hi-IN/run-log.ts

@@ -0,0 +1,29 @@
+const translation = {
+  input: 'इनपुट',
+  result: 'नतीजा',
+  detail: 'विवरण',
+  tracing: 'ट्रेसिंग',
+  resultPanel: {
+    status: 'स्थिति',
+    time: 'समय की अवधि',
+    tokens: 'कुल टोकन्स',
+  },
+  meta: {
+    title: 'मेटाडाटा',
+    status: 'स्थिति',
+    version: 'वर्ज़न',
+    executor: 'एक्ज़ीक्यूटर',
+    startTime: 'शुरुआत की समय',
+    time: 'समय की अवधि',
+    tokens: 'कुल टोकन्स',
+    steps: 'चालाने के चरण',
+  },
+  resultEmpty: {
+    title: 'इस रन में सिर्फ JSON फार्मेट का नतीजा है,',
+    tipLeft: 'लेखक ',
+    link: 'विवरण पैनल',
+    tipRight: ' देखें।',
+  },
+}
+
+export default translation

+ 74 - 0
web/i18n/hi-IN/share-app.ts

@@ -0,0 +1,74 @@
+const translation = {
+  common: {
+    welcome: 'आपका स्वागत है',
+    appUnavailable: 'ऐप उपलब्ध नहीं है',
+    appUnknownError: 'अज्ञात त्रुटि, कृपया पुनः प्रयास करें',
+  },
+  chat: {
+    newChat: 'नया चैट',
+    pinnedTitle: 'पिन किया गया',
+    unpinnedTitle: 'चैट',
+    newChatDefaultName: 'नया संवाद',
+    resetChat: 'संवाद रीसेट करें',
+    powerBy: 'संचालित है',
+    prompt: 'प्रॉम्प्ट',
+    privatePromptConfigTitle: 'संवाद सेटिंग्स',
+    publicPromptConfigTitle: 'प्रारंभिक प्रॉम्प्ट',
+    configStatusDes: 'शुरू करने से पहले, आप संवाद सेटिंग्स को बदल सकते हैं',
+    configDisabled:
+      'इस सत्र के लिए पिछले सत्र की सेटिंग्स का उपयोग किया गया है।',
+    startChat: 'चैट शुरू करें',
+    privacyPolicyLeft: 'कृपया पढ़ें ',
+    privacyPolicyMiddle: 'गोपनीयता नीति',
+    privacyPolicyRight: ' ऐप डेवलपर द्वारा प्रदान की गई।',
+    deleteConversation: {
+      title: 'संवाद हटाएं',
+      content: 'क्या आप इस संवाद को हटाना चाहते हैं?',
+    },
+    tryToSolve: 'समाधान करने का प्रयास करें',
+    temporarySystemIssue: 'अभी सिस्टम में समस्या है, कृपया पुनः प्रयास करें।',
+  },
+  generation: {
+    tabs: {
+      create: 'एक बार चलाएं',
+      batch: 'बैच चलाएं',
+      saved: 'सहेजा गया',
+    },
+    savedNoData: {
+      title: 'आपने अभी तक कोई परिणाम नहीं सहेजा है!',
+      description:
+        'सामग्री बनाना शुरू करें और यहाँ अपने सहेजे गए परिणाम देखें।',
+      startCreateContent: 'सामग्री बनाना शुरू करें',
+    },
+    title: 'एआई पूर्णता',
+    queryTitle: 'प्रश्न सामग्री',
+    completionResult: 'पूर्णता परिणाम',
+    queryPlaceholder: 'अपना प्रश्न लिखें...',
+    run: 'चालू करें',
+    copy: 'कॉपी करें',
+    resultTitle: 'एआई पूर्णता',
+    noData: 'एआई आपको यहाँ चाहिए।',
+    csvUploadTitle: 'अपनी सीएसवी फ़ाइल यहाँ ड्रैग और ड्रॉप करें, या ',
+    browse: 'ब्राउज़ करें',
+    csvStructureTitle: 'सीएसवी फ़ाइल को निम्नलिखित संरचना का पालन करना चाहिए:',
+    downloadTemplate: 'टेम्पलेट यहाँ डाउनलोड करें',
+    field: 'क्षेत्र',
+    batchFailed: {
+      info: '{{num}} विफल कार्यान्वयन',
+      retry: 'पुनः प्रयास करें',
+      outputPlaceholder: 'कोई आउटपुट सामग्री नहीं',
+    },
+    errorMsg: {
+      empty: 'कृपया अपलोड किए गए फ़ाइल में सामग्री भरें।',
+      fileStructNotMatch:
+        'अपलोड की गई सीएसवी फ़ाइल संरचना से मेल नहीं खाती है।',
+      emptyLine: 'रॉ {{rowIndex}} खाली है',
+      invalidLine: 'रॉ {{rowIndex}}: {{varName}} मान खाली नहीं हो सकता',
+      moreThanMaxLengthLine:
+        'रॉ {{rowIndex}}: {{varName}} मान {{maxLength}} वर्णों से अधिक नहीं हो सकता',
+      atLeastOne: 'कृपया अपलोड की गई फ़ाइल में कम से कम एक पंक्ति भरें।',
+    },
+  },
+}
+
+export default translation

+ 155 - 0
web/i18n/hi-IN/tools.ts

@@ -0,0 +1,155 @@
+const translation = {
+  title: 'उपकरण',
+  createCustomTool: 'कस्टम उपकरण बनाएं',
+  customToolTip: 'Dify कस्टम उपकरणों के बारे में और जानें',
+  type: {
+    all: 'सभी',
+    builtIn: 'निर्मित',
+    custom: 'कस्टम',
+    workflow: 'कार्यप्रवाह',
+  },
+  contribute: {
+    line1: 'मैं रुचि रखता हूं ',
+    line2: 'Dify में उपकरण दान करने में।',
+    viewGuide: 'गाइड देखें',
+  },
+  author: 'द्वारा',
+  auth: {
+    unauthorized: 'अधिकृत करने के लिए',
+    authorized: 'अधिकृत',
+    setup: 'उपयोग करने के लिए अधिकृति सेटअप करें',
+    setupModalTitle: 'अधिकृति सेटअप करें',
+    setupModalTitleDescription:
+      'प्रमाणिकरण कॉन्फ़िगर करने के बाद, कार्यस्थान के सभी सदस्य इस उपकरण का उपयोग कर सकेंगे।',
+  },
+  includeToolNum: '{{num}} उपकरण शामिल हैं',
+  addTool: 'उपकरण जोड़ें',
+  addToolModal: {
+    type: 'प्रकार',
+    category: 'श्रेणी',
+    add: 'जोड़ें',
+    added: 'जोड़ा गया',
+    manageInTools: 'उपकरणों में प्रबंधित करें',
+    emptyTitle: 'कोई कार्यप्रवाह उपकरण उपलब्ध नहीं',
+    emptyTip: 'कार्यप्रवाह -> उपकरण के रूप में प्रकाशित पर जाएं',
+  },
+  createTool: {
+    title: 'कस्टम उपकरण बनाएं',
+    editAction: 'कॉन्फ़िगर करें',
+    editTitle: 'कस्टम उपकरण संपादित करें',
+    name: 'नाम',
+    toolNamePlaceHolder: 'उपकरण का नाम दर्ज करें',
+    nameForToolCall: 'उपकरण कॉल नाम',
+    nameForToolCallPlaceHolder:
+      'मशीन पहचान के लिए उपयोग, जैसे कि getCurrentWeather, list_pets',
+    nameForToolCallTip: 'केवल संख्या, अक्षर, और अंडरस्कोर का समर्थन करता है।',
+    description: 'विवरण',
+    descriptionPlaceholder:
+      'विशिष्ट स्थान के लिए तापमान प्राप्त करने का उद्देश्य, उदाहरण के लिए।',
+    schema: 'स्कीमा',
+    schemaPlaceHolder: 'यहाँ अपना OpenAPI स्कीमा दर्ज करें',
+    viewSchemaSpec: 'OpenAPI-Swagger विनिर्देश देखें',
+    importFromUrl: 'URL से आयात करें',
+    importFromUrlPlaceHolder: 'https://...',
+    urlError: 'कृपया एक मान्य URL दर्ज करें',
+    examples: 'उदाहरण',
+    exampleOptions: {
+      json: 'मौसम(JSON)',
+      yaml: 'पेट स्टोर(YAML)',
+      blankTemplate: 'खाली टेम्पलेट',
+    },
+    availableTools: {
+      title: 'उपलब्ध उपकरण',
+      name: 'नाम',
+      description: 'विवरण',
+      method: 'विधि',
+      path: 'पथ',
+      action: 'क्रियाएं',
+      test: 'परीक्षण',
+    },
+    authMethod: {
+      title: 'अधिकृति विधि',
+      type: 'अधिकृति प्रकार',
+      keyTooltip:
+        'Http हैडर कुंजी, यदि आपको कुछ पता नहीं है तो "Authorization" के साथ छोड़ सकते हैं या इसे कस्टम मूल्य पर सेट कर सकते हैं',
+      types: {
+        none: 'कोई नहीं',
+        api_key: 'API कुंजी',
+        apiKeyPlaceholder: 'API कुंजी के लिए HTTP हैडर नाम',
+        apiValuePlaceholder: 'API कुंजी दर्ज करें',
+      },
+      key: 'कुंजी',
+      value: 'मूल्य',
+    },
+    authHeaderPrefix: {
+      title: 'अधिकृति प्रकार',
+      types: {
+        basic: 'बेसिक',
+        bearer: 'बियरर',
+        custom: 'कस्टम',
+      },
+    },
+    privacyPolicy: 'गोपनीयता नीति',
+    privacyPolicyPlaceholder: 'कृपया गोपनीयता नीति दर्ज करें',
+    toolInput: {
+      title: 'उपकरण इनपुट',
+      name: 'नाम',
+      required: 'आवश्यक',
+      method: 'विधि',
+      methodSetting: 'सेटिंग',
+      methodSettingTip: 'उपयोगकर्ता उपकरण कॉन्फ़िगरेशन भरता है',
+      methodParameter: 'पैरामीटर',
+      methodParameterTip: 'LLM प्रतिपादन के दौरान भरता है',
+      label: 'टैग',
+      labelPlaceholder: 'टैग चुनें(वैकल्पिक)',
+      description: 'पैरामीटर के अर्थ का विवरण',
+    },
+    customDisclaimer: 'कस्टम अस्वीकरण',
+    customDisclaimerPlaceholder: 'कस्टम अस्वीकरण दर्ज करें',
+    confirmTitle: 'सहेजने की पुष्टि करें ?',
+    confirmTip: 'इस उपकरण का उपयोग करने वाले ऐप्स प्रभावित होंगे',
+  },
+  test: {
+    title: 'परीक्षण',
+    parametersValue: 'पैरामीटर और मूल्य',
+    parameters: 'पैरामीटर',
+    value: 'मूल्य',
+    testResult: 'परीक्षण परिणाम',
+    testResultPlaceholder: 'परीक्षण परिणाम यहाँ दिखाई देगा',
+  },
+  thought: {
+    using: 'का उपयोग करते हुए',
+    used: 'इस्तेमाल किया हुआ',
+    requestTitle: 'अनुरोध करने के लिए',
+    responseTitle: 'प्रतिक्रिया से',
+  },
+  setBuiltInTools: {
+    info: 'जानकारी',
+    setting: 'सेटिंग',
+    toolDescription: 'उपकरण विवरण',
+    parameters: 'पैरामीटर्स',
+    string: 'स्ट्रिंग',
+    number: 'नंबर',
+    required: 'आवश्यक',
+    infoAndSetting: 'जानकारी और सेटिंग्स',
+  },
+  noCustomTool: {
+    title: 'कोई कस्टम उपकरण नहीं!',
+    content:
+      'एआई ऐप्स बनाने के लिए यहां अपने कस्टम उपकरण जोड़ें और प्रबंधित करें।',
+    createTool: 'उपकरण बनाएं',
+  },
+  noSearchRes: {
+    title: 'क्षमा करें, कोई परिणाम नहीं!',
+    content: 'हम आपकी खोज से मेल खाने वाले कोई उपकरण नहीं ढूंढ पाए।',
+    reset: 'खोज रीसेट करें',
+  },
+  builtInPromptTitle: 'प्रॉम्प्ट',
+  toolRemoved: 'उपकरण हटाया गया',
+  notAuthorized: 'उपकरण अधिकृत नहीं',
+  howToGet: 'कैसे प्राप्त करें',
+  openInStudio: 'स्टूडियो में खोलें',
+  toolNameUsageTip: 'एजेंट तर्क और प्रेरण के लिए उपकरण कॉल नाम',
+}
+
+export default translation

+ 460 - 0
web/i18n/hi-IN/workflow.ts

@@ -0,0 +1,460 @@
+const translation = {
+  common: {
+    editing: 'संपादन',
+    autoSaved: 'स्वतः सहेजा गया',
+    unpublished: 'अप्रकाशित',
+    published: 'प्रकाशित',
+    publish: 'प्रकाशित करें',
+    update: 'अपडेट करें',
+    run: 'चलाएं',
+    running: 'चल रहा है',
+    inRunMode: 'रन मोड में',
+    inPreview: 'पूर्वावलोकन में',
+    inPreviewMode: 'पूर्वावलोकन मोड में',
+    preview: 'पूर्वावलोकन',
+    viewRunHistory: 'रन इतिहास देखें',
+    runHistory: 'रन इतिहास',
+    goBackToEdit: 'संपादक पर वापस जाएं',
+    conversationLog: 'वार्तालाप लॉग',
+    features: 'विशेषताएं',
+    debugAndPreview: 'डीबग और पूर्वावलोकन',
+    restart: 'पुनः आरंभ करें',
+    currentDraft: 'वर्तमान ड्राफ्ट',
+    currentDraftUnpublished: 'वर्तमान ड्राफ्ट अप्रकाशित',
+    latestPublished: 'नवीनतम प्रकाशित',
+    publishedAt: 'प्रकाशित',
+    restore: 'पुनर्स्थापित करें',
+    runApp: 'ऐप चलाएं',
+    batchRunApp: 'बैच ऐप चलाएं',
+    accessAPIReference: 'एपीआई संदर्भ तक पहुंचें',
+    embedIntoSite: 'साइट में एम्बेड करें',
+    addTitle: 'शीर्षक जोड़ें...',
+    addDescription: 'विवरण जोड़ें...',
+    noVar: 'कोई वेरिएबल नहीं',
+    searchVar: 'वेरिएबल खोजें',
+    variableNamePlaceholder: 'वेरिएबल नाम',
+    setVarValuePlaceholder: 'वेरिएबल सेट करें',
+    needConnecttip: 'यह चरण किसी से जुड़ा नहीं है',
+    maxTreeDepth: 'प्रति शाखा अधिकतम {{depth}} नोड्स की सीमा',
+    needEndNode: 'अंत ब्लॉक जोड़ा जाना चाहिए',
+    needAnswerNode: 'उत्तर ब्लॉक जोड़ा जाना चाहिए',
+    workflowProcess: 'कार्यप्रवाह प्रक्रिया',
+    notRunning: 'अभी तक नहीं चल रहा',
+    previewPlaceholder:
+      'चैटबॉट का डीबग शुरू करने के लिए नीचे दिए गए बॉक्स में सामग्री दर्ज करें',
+    effectVarConfirm: {
+      title: 'वेरिएबल हटाएं',
+      content:
+        'वेरिएबल अन्य नोड्स में उपयोग किया जाता है। क्या आप अभी भी इसे हटाना चाहते हैं?',
+    },
+    insertVarTip: 'जल्दी से डालने के लिए \'/\' कुंजी दबाएं',
+    processData: 'डेटा प्रोसेस करें',
+    input: 'इनपुट',
+    output: 'आउटपुट',
+    jinjaEditorPlaceholder: 'वेरिएबल डालने के लिए \'/\' या \'{\' टाइप करें',
+    viewOnly: 'केवल देखें',
+    showRunHistory: 'रन इतिहास दिखाएं',
+    enableJinja: 'Jinja टेम्पलेट समर्थन सक्षम करें',
+    learnMore: 'अधिक जानें',
+    copy: 'कॉपी करें',
+    duplicate: 'डुप्लिकेट करें',
+    addBlock: 'ब्लॉक जोड़ें',
+    pasteHere: 'यहां पेस्ट करें',
+    pointerMode: 'पॉइंटर मोड',
+    handMode: 'हैंड मोड',
+    model: 'मॉडल',
+    workflowAsTool: 'टूल के रूप में कार्यप्रवाह',
+    configureRequired: 'कॉन्फ़िगरेशन आवश्यक',
+    configure: 'कॉन्फ़िगर करें',
+    manageInTools: 'टूल्स में प्रबंधित करें',
+    workflowAsToolTip:
+      'कार्यप्रवाह अपडेट के बाद टूल पुनः कॉन्फ़िगरेशन आवश्यक है।',
+    viewDetailInTracingPanel: 'विवरण देखें',
+    syncingData: 'डेटा सिंक हो रहा है, बस कुछ सेकंड।',
+  },
+  errorMsg: {
+    fieldRequired: '{{field}} आवश्यक है',
+    authRequired: 'प्राधिकरण आवश्यक है',
+    invalidJson: '{{field}} अमान्य JSON है',
+    fields: {
+      variable: 'वेरिएबल नाम',
+      variableValue: 'वेरिएबल मान',
+      code: 'कोड',
+      model: 'मॉडल',
+      rerankModel: 'पुनः रैंक मॉडल',
+    },
+    invalidVariable: 'अमान्य वेरिएबल',
+  },
+  singleRun: {
+    testRun: 'परीक्षण रन',
+    startRun: 'रन शुरू करें',
+    running: 'चल रहा है',
+    testRunIteration: 'परीक्षण रन पुनरावृत्ति',
+    back: 'वापस',
+    iteration: 'पुनरावृत्ति',
+  },
+  tabs: {
+    'searchBlock': 'ब्लॉक खोजें',
+    'blocks': 'ब्लॉक्स',
+    'tools': 'टूल्स',
+    'allTool': 'सभी',
+    'builtInTool': 'अंतर्निहित',
+    'customTool': 'कस्टम',
+    'workflowTool': 'कार्यप्रवाह',
+    'question-understand': 'प्रश्न समझ',
+    'logic': 'तर्क',
+    'transform': 'परिवर्तन',
+    'utilities': 'उपयोगिताएं',
+    'noResult': 'कोई मिलान नहीं मिला',
+  },
+  blocks: {
+    'start': 'प्रारंभ',
+    'end': 'समाप्त',
+    'answer': 'उत्तर',
+    'llm': 'एलएलएम',
+    'knowledge-retrieval': 'ज्ञान पुनर्प्राप्ति',
+    'question-classifier': 'प्रश्न वर्गीकरण',
+    'if-else': 'यदि/अन्यथा',
+    'code': 'कोड',
+    'template-transform': 'टेम्पलेट',
+    'http-request': 'एचटीटीपी अनुरोध',
+    'variable-assigner': 'वेरिएबल एग्रीगेटर',
+    'variable-aggregator': 'वेरिएबल एग्रीगेटर',
+    'iteration-start': 'पुनरावृत्ति प्रारंभ',
+    'iteration': 'पुनरावृत्ति',
+    'parameter-extractor': 'पैरामीटर निष्कर्षक',
+  },
+  blocksAbout: {
+    'start': 'वर्कफ़्लो लॉन्च करने के लिए प्रारंभिक पैरामीटर को परिभाषित करें',
+    'end': 'वर्कफ़्लो का अंत और परिणाम प्रकार परिभाषित करें',
+    'answer': 'चैट संवाद के उत्तर सामग्री को परिभाषित करें',
+    'llm': 'प्रश्नों के उत्तर देने या प्राकृतिक भाषा को संसाधित करने के लिए बड़े भाषा मॉडल को आमंत्रित करना',
+    'knowledge-retrieval':
+      'उपयोगकर्ता प्रश्नों से संबंधित पाठ सामग्री को ज्ञान से पूछने की अनुमति देता है',
+    'question-classifier':
+      'उपयोगकर्ता प्रश्नों की वर्गीकरण शर्तों को परिभाषित करें, LLM वर्गीकरण विवरण के आधार पर संवाद कैसे आगे बढ़ता है, इसे परिभाषित कर सकता है',
+    'if-else':
+      'if/else शर्तों के आधार पर वर्कफ़्लो को दो शाखाओं में विभाजित करने की अनुमति देता है',
+    'code': 'कस्टम लॉजिक को लागू करने के लिए एक टुकड़ा Python या NodeJS कोड निष्पादित करें',
+    'template-transform':
+      'Jinja टेम्पलेट सिंटैक्स का उपयोग करके डेटा को स्ट्रिंग में परिवर्तित करें',
+    'http-request': 'HTTP प्रोटोकॉल पर सर्वर अनुरोधों को भेजने की अनुमति दें',
+    'variable-assigner':
+      'डाउनस्ट्रीम नोड्स की एकीकृत कॉन्फ़िगरेशन के लिए बहु-शाखा चर को एकल चर में संकलित करें।',
+    'variable-aggregator':
+      'डाउनस्ट्रीम नोड्स की एकीकृत कॉन्फ़िगरेशन के लिए बहु-शाखा चर को एकल चर में संकलित करें।',
+    'iteration':
+      'एक सूची वस्तु पर तब तक कई कदम करें जब तक सभी परिणाम आउटपुट न हो जाएं।',
+    'parameter-extractor':
+      'टूल आमंत्रणों या HTTP अनुरोधों के लिए प्राकृतिक भाषा से संरचित पैरामीटर निकालने के लिए LLM का उपयोग करें।',
+  },
+  operator: {
+    zoomIn: 'ज़ूम इन',
+    zoomOut: 'ज़ूम आउट',
+    zoomTo50: '50% पर ज़ूम करें',
+    zoomTo100: '100% पर ज़ूम करें',
+    zoomToFit: 'फिट करने के लिए ज़ूम करें',
+  },
+  panel: {
+    userInputField: 'उपयोगकर्ता इनपुट फ़ील्ड',
+    changeBlock: 'ब्लॉक बदलें',
+    helpLink: 'सहायता लिंक',
+    about: 'के बारे में',
+    createdBy: 'द्वारा बनाया गया ',
+    nextStep: 'अगला कदम',
+    addNextStep: 'इस वर्कफ़्लो में अगला ब्लॉक जोड़ें',
+    selectNextStep: 'अगला ब्लॉक चुनें',
+    runThisStep: 'इस कदम को चलाएं',
+    checklist: 'चेकलिस्ट',
+    checklistTip:
+      'प्रकाशित करने से पहले सुनिश्चित करें कि सभी समस्याएं हल हो गई हैं',
+    checklistResolved: 'सभी समस्याएं हल हो गई हैं',
+    organizeBlocks: 'ब्लॉक्स को व्यवस्थित करें',
+    change: 'बदलें',
+  },
+  nodes: {
+    common: {
+      outputVars: 'आउटपुट वेरिएबल्स',
+      insertVarTip: 'वेरिएबल डालें',
+      memory: {
+        memory: 'मेमोरी',
+        memoryTip: 'चैट मेमोरी सेटिंग्स',
+        windowSize: 'विंडो साइज',
+        conversationRoleName: 'वार्तालाप भूमिका का नाम',
+        user: 'यूजर प्रीफिक्स',
+        assistant: 'असिस्टेंट प्रीफिक्स',
+      },
+      memories: {
+        title: 'मेमोरीज',
+        tip: 'चैट मेमोरी',
+        builtIn: 'निर्मित',
+      },
+    },
+    start: {
+      required: 'आवश्यक',
+      inputField: 'इनपुट फील्ड',
+      builtInVar: 'निर्मित वेरिएबल्स',
+      outputVars: {
+        query: 'यूजर इनपुट',
+        memories: {
+          des: 'वार्तालाप इतिहास',
+          type: 'संदेश प्रकार',
+          content: 'संदेश सामग्री',
+        },
+        files: 'फ़ाइल सूची',
+      },
+      noVarTip: 'वर्कफ्लो में उपयोग के लिए इनपुट्स सेट करें',
+    },
+    end: {
+      outputs: 'आउटपुट्स',
+      output: {
+        type: 'आउटपुट प्रकार',
+        variable: 'आउटपुट वेरिएबल',
+      },
+      type: {
+        'none': 'कोई नहीं',
+        'plain-text': 'सादा पाठ',
+        'structured': 'संरचित',
+      },
+    },
+    answer: {
+      answer: 'उत्तर',
+      outputVars: 'आउटपुट वेरिएबल्स',
+    },
+    llm: {
+      model: 'मॉडल',
+      variables: 'वेरिएबल्स',
+      context: 'संदर्भ',
+      contextTooltip: 'संदर्भ के रूप में ज्ञान आयात कर सकते हैं',
+      notSetContextInPromptTip:
+        'संदर्भ सुविधा को सक्षम करने के लिए, कृपया प्रॉम्प्ट में संदर्भ वेरिएबल भरें।',
+      prompt: 'प्रॉम्प्ट',
+      roleDescription: {
+        system: 'वार्तालाप के लिए उच्च स्तरीय निर्देश दें',
+        user: 'मॉडल को निर्देश, प्रश्न या कोई भी पाठ-आधारित इनपुट प्रदान करें',
+        assistant: 'यूजर संदेशों के आधार पर मॉडल की प्रतिक्रियाएं',
+      },
+      addMessage: 'संदेश जोड़ें',
+      vision: 'दृष्टि',
+      files: 'फाइलें',
+      resolution: {
+        name: 'रेजोल्यूशन',
+        high: 'उच्च',
+        low: 'निम्न',
+      },
+      outputVars: {
+        output: 'सामग्री उत्पन्न करें',
+        usage: 'मॉडल उपयोग जानकारी',
+      },
+      singleRun: {
+        variable: 'वेरिएबल',
+      },
+      sysQueryInUser: 'उपयोगकर्ता संदेश में sys.query आवश्यक है',
+    },
+    knowledgeRetrieval: {
+      queryVariable: 'प्रश्न वेरिएबल',
+      knowledge: 'ज्ञान',
+      outputVars: {
+        output: 'प्राप्त विभाजित डेटा',
+        content: 'विभाजित सामग्री',
+        title: 'विभाजित शीर्षक',
+        icon: 'विभाजित आइकन',
+        url: 'विभाजित URL',
+        metadata: 'अन्य मेटाडेटा',
+      },
+    },
+    http: {
+      inputVars: 'इनपुट वेरिएबल्स',
+      api: 'API',
+      apiPlaceholder: 'URL दर्ज करें, वेरिएबल डालने के लिए ‘/’ टाइप करें',
+      notStartWithHttp: 'API को http:// या https:// से शुरू होना चाहिए',
+      key: 'कुंजी',
+      value: 'मान',
+      bulkEdit: 'थोक संपादन',
+      keyValueEdit: 'कुंजी-मान संपादन',
+      headers: 'हेडर्स',
+      params: 'पैरामीटर्स',
+      body: 'बॉडी',
+      outputVars: {
+        body: 'प्रतिक्रिया सामग्री',
+        statusCode: 'प्रतिक्रिया स्थिति कोड',
+        headers: 'प्रतिक्रिया हेडर सूची JSON',
+        files: 'फ़ाइल सूची',
+      },
+      authorization: {
+        'authorization': 'अधिकृति',
+        'authorizationType': 'अधिकृति प्रकार',
+        'no-auth': 'कोई नहीं',
+        'api-key': 'API-की',
+        'auth-type': 'अधिकृति प्रकार',
+        'basic': 'बेसिक',
+        'bearer': 'बियरर',
+        'custom': 'कस्टम',
+        'api-key-title': 'API की',
+        'header': 'हेडर',
+      },
+      insertVarPlaceholder: 'वेरिएबल डालने के लिए \'/\' टाइप करें',
+      timeout: {
+        title: 'टाइमआउट',
+        connectLabel: 'कनेक्शन टाइमआउट',
+        connectPlaceholder: 'कनेक्शन टाइमआउट सेकंड में दर्ज करें',
+        readLabel: 'रीड टाइमआउट',
+        readPlaceholder: 'रीड टाइमआउट सेकंड में दर्ज करें',
+        writeLabel: 'राइट टाइमआउट',
+        writePlaceholder: 'राइट टाइमआउट सेकंड में दर्ज करें',
+      },
+    },
+    code: {
+      inputVars: 'इनपुट वेरिएबल्स',
+      outputVars: 'आउटपुट वेरिएबल्स',
+      advancedDependencies: 'उन्नत निर्भरताएँ',
+      advancedDependenciesTip:
+        'कुछ प्रीलोडेड निर्भरताएँ जोड़ें जिनका उपयोग करने में अधिक समय लगता है या जो डिफ़ॉल्ट निर्मित में नहीं हैं',
+      searchDependencies: 'निर्भरताएँ खोजें',
+    },
+    templateTransform: {
+      inputVars: 'इनपुट वेरिएबल्स',
+      code: 'कोड',
+      codeSupportTip: 'केवल Jinja2 का समर्थन करता है',
+      outputVars: {
+        output: 'रूपांतरित सामग्री',
+      },
+    },
+    ifElse: {
+      if: 'यदि',
+      else: 'अन्य',
+      elseDescription:
+        'इस तर्क को परिभाषित करने के लिए प्रयोग किया जाता है जो यदि शर्त पूरी नहीं होती है तो निष्पादित किया जाना चाहिए।',
+      and: 'और',
+      or: 'या',
+      operator: 'ऑपरेटर',
+      notSetVariable: 'कृपया पहले वेरिएबल सेट करें',
+      comparisonOperator: {
+        'contains': 'शामिल है',
+        'not contains': 'शामिल नहीं है',
+        'start with': 'से शुरू होता है',
+        'end with': 'पर समाप्त होता है',
+        'is': 'है',
+        'is not': 'नहीं है',
+        'empty': 'खाली है',
+        'not empty': 'खाली नहीं है',
+        'null': 'शून्य है',
+        'not null': 'शून्य नहीं है',
+      },
+      enterValue: 'मान दर्ज करें',
+      addCondition: 'शर्त जोड़ें',
+      conditionNotSetup: 'शर्त सेटअप नहीं है',
+    },
+    variableAssigner: {
+      title: 'वेरिएबल्स असाइन करें',
+      outputType: 'आउटपुट प्रकार',
+      varNotSet: 'वेरिएबल सेट नहीं है',
+      noVarTip: 'असाइन किए जाने वाले वेरिएबल्स जोड़ें',
+      type: {
+        string: 'स्ट्रिंग',
+        number: 'नंबर',
+        object: 'ऑब्जेक्ट',
+        array: 'ऐरे',
+      },
+      aggregationGroup: 'एग्रीगेशन ग्रुप',
+      aggregationGroupTip:
+        'इस सुविधा को सक्षम करने से वेरिएबल एग्रीगेटर को मल्टीपल सेट्स ऑफ वेरिएबल्स को एग्रीगेट करने की अनुमति मिलती है।',
+      addGroup: 'ग्रुप जोड़ें',
+      outputVars: {
+        varDescribe: '{{groupName}} आउटपुट',
+      },
+      setAssignVariable: 'असाइन वेरिएबल सेट करें',
+    },
+    tool: {
+      toAuthorize: 'अधिकृत करने के लिए',
+      inputVars: 'इनपुट वेरिएबल्स',
+      outputVars: {
+        text: 'उपकरण द्वारा उत्पन्न सामग्री',
+        files: {
+          title: 'उपकरण द्वारा उत्पन्न फाइलें',
+          type: 'समर्थन प्रकार। अब केवल इमेज का समर्थन करता है',
+          transfer_method: 'ट्रांसफर मेथड। मान रिमोट_यूआरएल या लोकल_फाइल है',
+          url: 'इमेज यूआरएल',
+          upload_file_id: 'अपलोड फ़ाइल आईडी',
+        },
+      },
+    },
+    questionClassifiers: {
+      model: 'मॉडल',
+      inputVars: 'इनपुट वेरिएबल्स',
+      outputVars: {
+        className: 'क्लास नाम',
+      },
+      class: 'क्लास',
+      classNamePlaceholder: 'अपना क्लास नाम लिखें',
+      advancedSetting: 'उन्नत सेटिंग',
+      topicName: 'विषय नाम',
+      topicPlaceholder: 'अपना विषय नाम लिखें',
+      addClass: 'क्लास जोड़ें',
+      instruction: 'निर्देश',
+      instructionTip:
+        'प्रश्न वर्गीकरणकर्ता को प्रश्नों को वर्गीकृत करने के तरीके को समझने में मदद करने के लिए अतिरिक्त निर्देश दें।',
+      instructionPlaceholder: 'अपना निर्देश लिखें',
+    },
+    parameterExtractor: {
+      inputVar: 'इनपुट वेरिएबल',
+      extractParameters: 'पैरामीटर्स निकालें',
+      importFromTool: 'उपकरणों से आयात करें',
+      addExtractParameter: 'एक्सट्रेक्ट पैरामीटर जोड़ें',
+      addExtractParameterContent: {
+        name: 'नाम',
+        namePlaceholder: 'एक्सट्रेक्ट पैरामीटर नाम',
+        type: 'प्रकार',
+        typePlaceholder: 'एक्सट्रेक्ट पैरामीटर प्रकार',
+        description: 'विवरण',
+        descriptionPlaceholder: 'एक्सट्रेक्ट पैरामीटर विवरण',
+        required: 'आवश्यक',
+        requiredContent:
+          'आवश्यक केवल मॉडल अनुमान के लिए एक संदर्भ के रूप में उपयोग किया जाता है, और पैरामीटर आउटपुट के अनिवार्य मान्यता के लिए नहीं।',
+      },
+      extractParametersNotSet: 'एक्सट्रेक्ट पैरामीटर्स सेटअप नहीं किए गए हैं',
+      instruction: 'निर्देश',
+      instructionTip:
+        'पैरामीटर निकालने वाले को समझने में मदद करने के लिए अतिरिक्त निर्देश दें कि कैसे पैरामीटर्स निकालें।',
+      advancedSetting: 'उन्नत सेटिंग',
+      reasoningMode: 'रीज़निंग मोड',
+      reasoningModeTip:
+        'फ़ंक्शन कॉलिंग या प्रॉम्प्ट्स के लिए निर्देशों का जवाब देने की मॉडल की क्षमता के आधार पर उपयुक्त रीज़निंग मोड चुन सकते हैं।',
+      isSuccess: 'सफलता है। सफलता पर मान 1 है, असफलता पर मान 0 है।',
+      errorReason: 'त्रुटि का कारण',
+    },
+    iteration: {
+      deleteTitle: 'इटरेशन नोड हटाएं?',
+      deleteDesc: 'इटरेशन नोड हटाने से सभी चाइल्ड नोड्स हट जाएंगे',
+      input: 'इनपुट',
+      output: 'आउटपुट वेरिएबल्स',
+      iteration_one: '{{count}} इटरेशन',
+      iteration_other: '{{count}} इटरेशन्स',
+      currentIteration: 'वर्तमान इटरेशन',
+    },
+    note: {
+      addNote: 'नोट जोड़ें',
+      editor: {
+        placeholder: 'अपना नोट लिखें...',
+        small: 'छोटा',
+        medium: 'मध्यम',
+        large: 'बड़ा',
+        bold: 'बोल्ड',
+        italic: 'इटैलिक',
+        strikethrough: 'स्ट्राइकथ्रू',
+        link: 'लिंक',
+        openLink: 'खोलें',
+        unlink: 'लिंक हटाएं',
+        enterUrl: 'URL दर्ज करें...',
+        invalidUrl: 'अवैध URL',
+        bulletList: 'बुलेट लिस्ट',
+        showAuthor: 'लेखक दिखाएं',
+      },
+    },
+  },
+  tracing: {
+    stopBy: '{{user}} द्वारा रोका गया',
+  },
+}
+
+export default translation

+ 1 - 0
web/i18n/language.ts

@@ -22,6 +22,7 @@ export type I18nText = {
   'zh_Hant': string
   'ro-RO': string
   'pl-PL': string
+  'hi-IN': string
 }
 
 export const languages = data.languages

+ 7 - 0
web/i18n/languages.json

@@ -118,6 +118,13 @@
       "prompt_name": "Polish",
       "example": "Cześć, Dify!",
       "supported": true
+    },
+    {
+      "value": "hi-IN",
+      "name": "Hindi (India)",
+      "prompt_name": "Hindi",
+      "example": "नमस्ते, Dify!",
+      "supported": "true"
     }
   ]
 }