Explorar o código

feat: Added hindi translation i18n (#5240)

Yash Parmar hai 10 meses
pai
achega
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

@@ -0,0 +1,83 @@
+const translation = {
+  apiServer: 'एपीआई सर्वर',
+  apiKey: 'एपीआई कुंजी',
+  status: 'स्थिति',
+  disabled: 'अक्षम',
+  ok: 'सेवा में',
+  copy: 'प्रतिलिपि',
+  copied: 'प्रतिलिपि बन गई',
+  play: 'चलाएं',
+  pause: 'विराम',
+  playing: 'चल रहा है',
+  loading: 'लोड हो रहा है',
+  merMaind: {
+    rerender: 'पुनः रीरेंडर करें',
+  },
+  never: 'कभी नहीं',
+  apiKeyModal: {
+    apiSecretKey: 'एपीआई गुप्त कुंजी',
+    apiSecretKeyTips: 'एपीआई का दुरुपयोग रोकने के लिए, अपनी एपीआई कुंजी की सुरक्षा करें। फ्रंट-एंड कोड में इसे सादे पाठ के रूप में उपयोग करने से बचें। :)',
+    createNewSecretKey: 'नई गुप्त कुंजी बनाएँ',
+    secretKey: 'गुप्त कुंजी',
+    created: 'बनाई गई',
+    lastUsed: 'अंतिम उपयोग',
+    generateTips: 'इस कुंजी को एक सुरक्षित और सुलभ स्थान पर रखें।',
+  },
+  actionMsg: {
+    deleteConfirmTitle: 'इस गुप्त कुंजी को हटाएं?',
+    deleteConfirmTips: 'यह क्रिया पूर्ववत नहीं की जा सकती।',
+    ok: 'ठीक',
+  },
+  completionMode: {
+    title: 'पूर्णता ऐप एपीआई',
+    info: 'उच्च गुणवत्ता वाली पाठ पीढ़ी के लिए, जैसे लेख, सारांश, और अनुवाद, उपयोगकर्ता इनपुट के साथ पूर्णता-संदेश एपीआई का उपयोग करें। पाठ पीढ़ी मॉडल पैरामीटर और प्रॉम्प्ट टेम्पलेट्स पर निर्भर करती है जो प्रॉम्प्ट इंजीनियरिंग में सेट होते हैं।',
+    createCompletionApi: 'पूर्णता संदेश बनाएँ',
+    createCompletionApiTip: 'प्रश्न-उत्तर मोड का समर्थन करने के लिए पूर्णता संदेश बनाएँ।',
+    inputsTips: '(वैकल्पिक) उपयोगकर्ता इनपुट फ़ील्ड को कुंजी-मूल्य जोड़े के रूप में प्रदान करें, जो प्रॉम्प्ट इंजीनियरिंग में चर के अनुरूप हो। कुंजी चर का नाम है, मूल्य पैरामीटर मूल्य है। यदि फ़ील्ड प्रकार चयन है, तो प्रस्तुत मूल्य प्रीसेट विकल्पों में से एक होना चाहिए।',
+    queryTips: 'उपयोगकर्ता इनपुट पाठ सामग्री।',
+    blocking: 'ब्लॉकिंग प्रकार, निष्पादन पूरा होने की प्रतीक्षा करता है और परिणाम लौटाता है। (प्रक्रिया लंबी होने पर अनुरोधों को रोका जा सकता है)',
+    streaming: 'स्ट्रीमिंग रिटर्न। एसएसई (सर्वर-सेंट इवेंट्स) के आधार पर स्ट्रीमिंग रिटर्न का कार्यान्वयन।',
+    messageFeedbackApi: 'संदेश प्रतिक्रिया (पसंद)',
+    messageFeedbackApiTip: 'उपयोगकर्ताओं की ओर से प्राप्त संदेशों को पसंद या नापसंद करें। यह डेटा लॉग और एनोटेशन पृष्ठ में दिखाई देता है और भविष्य के मॉडल सुधार के लिए उपयोग किया जाता है।',
+    messageIDTip: 'संदेश आईडी',
+    ratingTip: 'पसंद या नापसंद, null पूर्ववत है',
+    parametersApi: 'एप्लिकेशन पैरामीटर जानकारी प्राप्त करें',
+    parametersApiTip: 'कॉन्फ़िगर किए गए इनपुट पैरामीटर प्राप्त करें, जिनमें चर नाम, फ़ील्ड नाम, प्रकार और डिफ़ॉल्ट मान शामिल हैं। आमतौर पर इन फ़ील्डों को फ़ॉर्म में प्रदर्शित करने या क्लाइंट लोड होने के बाद डिफ़ॉल्ट मान भरने के लिए उपयोग किया जाता है।',
+  },
+  chatMode: {
+    title: 'चैट ऐप एपीआई',
+    info: 'विविध बातचीत ऐप्स के लिए जो प्रश्न-उत्तर प्रारूप का उपयोग करते हैं, चैट-संदेश एपीआई को कॉल करें। संवाद शुरू करने के लिए या मौजूदा बातचीत को जारी रखने के लिए conversation_id पास करें। उत्तर पैरामीटर और टेम्पलेट प्रॉम्प्ट इंजीनियरिंग सेटिंग्स पर निर्भर करते हैं।',
+    createChatApi: 'चैट संदेश बनाएँ',
+    createChatApiTip: 'नई बातचीत संदेश बनाएँ या मौजूदा संवाद जारी रखें।',
+    inputsTips: '(वैकल्पिक) उपयोगकर्ता इनपुट फ़ील्ड को कुंजी-मूल्य जोड़े के रूप में प्रदान करें, जो प्रॉम्प्ट इंजीनियरिंग में चर के अनुरूप हो। कुंजी चर का नाम है, मूल्य पैरामीटर मूल्य है। यदि फ़ील्ड प्रकार चयन है, तो प्रस्तुत मूल्य प्रीसेट विकल्पों में से एक होना चाहिए।',
+    queryTips: 'उपयोगकर्ता इनपुट/प्रश्न सामग्री',
+    blocking: 'ब्लॉकिंग प्रकार, निष्पादन पूरा होने की प्रतीक्षा करता है और परिणाम लौटाता है। (प्रक्रिया लंबी होने पर अनुरोधों को रोका जा सकता है)',
+    streaming: 'स्ट्रीमिंग रिटर्न। एसएसई (सर्वर-सेंट इवेंट्स) के आधार पर स्ट्रीमिंग रिटर्न का कार्यान्वयन।',
+    conversationIdTip: '(वैकल्पिक) बातचीत आईडी: पहली बार बातचीत के लिए खाली छोड़ दें; संवाद जारी रखने के लिए संदर्भ से conversation_id पास करें।',
+    messageFeedbackApi: 'संदेश अंतिम उपयोगकर्ता प्रतिक्रिया, पसंद',
+    messageFeedbackApiTip: 'उपयोगकर्ताओं की ओर से प्राप्त संदेशों को पसंद या नापसंद करें। यह डेटा लॉग और एनोटेशन पृष्ठ में दिखाई देता है और भविष्य के मॉडल सुधार के लिए उपयोग किया जाता है।',
+    messageIDTip: 'संदेश आईडी',
+    ratingTip: 'पसंद या नापसंद, null पूर्ववत है',
+    chatMsgHistoryApi: 'चैट इतिहास संदेश प्राप्त करें',
+    chatMsgHistoryApiTip: 'पहला पृष्ठ नवीनतम `limit` बार लौटाता है, जो उल्टे क्रम में होता है।',
+    chatMsgHistoryConversationIdTip: 'बातचीत आईडी',
+    chatMsgHistoryFirstId: 'वर्तमान पृष्ठ पर पहले चैट रिकॉर्ड का आईडी। डिफ़ॉल्ट रूप से कोई नहीं।',
+    chatMsgHistoryLimit: 'एक अनुरोध में कितनी चैट लौटाई जाती है',
+    conversationsListApi: 'बातचीत सूची प्राप्त करें',
+    conversationsListApiTip: 'वर्तमान उपयोगकर्ता की सत्र सूची प्राप्त करता है। डिफ़ॉल्ट रूप से, अंतिम 20 सत्र लौटाए जाते हैं।',
+    conversationsListFirstIdTip: 'वर्तमान पृष्ठ पर अंतिम रिकॉर्ड का आईडी, डिफ़ॉल्ट कोई नहीं।',
+    conversationsListLimitTip: 'एक अनुरोध में कितनी चैट लौटाई जाती है',
+    conversationRenamingApi: 'बातचीत का पुनः नामकरण',
+    conversationRenamingApiTip: 'बातचीत का पुनः नामकरण करें; नाम बहु-सत्र क्लाइंट इंटरफेस में प्रदर्शित होता है।',
+    conversationRenamingNameTip: 'नया नाम',
+    parametersApi: 'एप्लिकेशन पैरामीटर जानकारी प्राप्त करें',
+    parametersApiTip: 'कॉन्फ़िगर किए गए इनपुट पैरामीटर प्राप्त करें, जिनमें चर नाम, फ़ील्ड नाम, प्रकार और डिफ़ॉल्ट मान शामिल हैं। आमतौर पर इन फ़ील्डों को फ़ॉर्म में प्रदर्शित करने या क्लाइंट लोड होने के बाद डिफ़ॉल्ट मान भरने के लिए उपयोग किया जाता है।',
+  },
+  develop: {
+    requestBody: 'अनुरोध निकाय',
+    pathParams: 'पथ पैरामीटर',
+    query: 'प्रश्न',
+  },
+}
+
+export default translation

+ 466 - 0
web/i18n/hi-IN/app-debug.ts

@@ -0,0 +1,466 @@
+const translation = {
+  pageTitle: {
+    line1: 'प्रॉम्प्ट',
+    line2: 'इंजीनियरिंग',
+  },
+  orchestrate: 'व्यवस्थित करना',
+  promptMode: {
+    simple:
+      'संपूर्ण प्रॉम्प्ट को संपादित करने के लिए एक्सपर्ट मोड में स्विच करें',
+    advanced: 'विशेषज्ञ मोड',
+    switchBack: 'वापस स्विच करें',
+    advancedWarning: {
+      title:
+        'आपने विशेषज्ञ मोड में स्विच किया है, और एक बार जब आप प्रॉम्प्ट को संशोधित करते हैं, तो आप बेसिक मोड पर वापस नहीं जा सकते हैं।',
+      description:
+        'विशेषज्ञ मोड में, आप संपूर्ण प्रॉम्प्ट को संपादित कर सकते हैं।',
+      learnMore: 'और अधिक जानें',
+      ok: 'ठीक है',
+    },
+    operation: {
+      addMessage: 'संदेश जोड़ें',
+    },
+    contextMissing:
+      'प्रसंग घटक गायब है, प्रॉम्प्ट की प्रभावशीलता अच्छी नहीं हो सकती है।',
+  },
+  operation: {
+    applyConfig: 'प्रकाशित करें',
+    resetConfig: 'रीसेट करें',
+    debugConfig: 'डीबग करें',
+    addFeature: 'विशेषता जोड़ें',
+    automatic: 'स्वचालित',
+    stopResponding: 'प्रतिक्रिया देना बंद करें',
+    agree: 'पसंद',
+    disagree: 'नापसंद',
+    cancelAgree: 'पसंद रद्द करें',
+    cancelDisagree: 'नापसंद रद्द करें',
+    userAction: 'उपयोगकर्ता ',
+  },
+  notSetAPIKey: {
+    title: 'एलएलएम प्रदाता कुंजी सेट नहीं की गई है',
+    trailFinished: 'परीक्षण समाप्त',
+    description:
+      'एलएलएम प्रदाता कुंजी सेट नहीं की गई है, और डीबग करने से पहले इसे सेट करने की आवश्यकता है।',
+    settingBtn: 'सेटिंग्स पर जाएं',
+  },
+  trailUseGPT4Info: {
+    title: 'अभी GPT-4 का समर्थन नहीं करता',
+    description: 'GPT-4 का उपयोग करने के लिए, कृपया API कुंजी सेट करें।',
+  },
+  feature: {
+    groupChat: {
+      title: 'चैट संवर्धन',
+      description:
+        'ऐप्स के लिए पूर्व-संवाद सेटिंग्स जोड़ने से उपयोगकर्ता अनुभव को बढ़ाया जा सकता है।',
+    },
+    groupExperience: {
+      title: 'अनुभव संवर्धन',
+    },
+    conversationOpener: {
+      title: 'संवाद शुरू करने वाले',
+      description:
+        'एक चैट ऐप में, एआई द्वारा उपयोगकर्ता से सक्रिय रूप से बोले जाने वाला पहला वाक्य आमतौर पर एक स्वागत के रूप में उपयोग किया जाता है।',
+    },
+    suggestedQuestionsAfterAnswer: {
+      title: 'फॉलो-अप',
+      description:
+        'अगले प्रश्न सुझाव सेट करना उपयोगकर्ताओं को बेहतर चैट दे सकता है।',
+      resDes: 'उपयोगकर्ता के अगले प्रश्न के लिए 3 सुझाव।',
+      tryToAsk: 'पूछने का प्रयास करें',
+    },
+    moreLikeThis: {
+      title: 'ऐसा और',
+      description:
+        'एक बार में कई पाठ उत्पन्न करें, और फिर संपादित करें और जारी रखें',
+      generateNumTip: 'प्रत्येक उत्पन्न समय की संख्या',
+      tip: 'इस सुविधा का उपयोग करने से अतिरिक्त टोकन खर्च होगा',
+    },
+    speechToText: {
+      title: 'वाक् से पाठ',
+      description: 'सक्रिय होने पर, आप वॉयस इनपुट का उपयोग कर सकते हैं।',
+      resDes: 'वॉयस इनपुट सक्रिय है',
+    },
+    textToSpeech: {
+      title: 'पाठ से वाक्',
+      description: 'सक्रिय होने पर, पाठ को वाक् में परिवर्तित किया जा सकता है।',
+      resDes: 'पाठ से ऑडियो सक्रिय है',
+    },
+    citation: {
+      title: 'उद्धरण और संदर्भ',
+      description:
+        'सक्रिय होने पर, उत्पन्न सामग्री के स्रोत दस्तावेज़ और संदर्भित अनुभाग दिखाएं।',
+      resDes: 'उद्धरण और संदर्भ सक्रिय है',
+    },
+    annotation: {
+      title: 'एनोटेशन उत्तर',
+      description:
+        'आप उच्च-गुणवत्ता वाले उत्तर को कैश में मैन्युअल रूप से जोड़ सकते हैं ताकि समान उपयोगकर्ता प्रश्नों से प्राथमिकता से मेल खाया जा सके।',
+      resDes: 'एनोटेशन प्रतिक्रिया सक्रिय है',
+      scoreThreshold: {
+        title: 'स्कोर थ्रेशोल्ड',
+        description:
+          'एनोटेशन उत्तर के लिए समानता थ्रेशोल्ड सेट करने के लिए उपयोग किया जाता है।',
+        easyMatch: 'आसान मेल',
+        accurateMatch: 'सटीक मेल',
+      },
+      matchVariable: {
+        title: 'मेल चर',
+        choosePlaceholder: 'मेल चर चुनें',
+      },
+      cacheManagement: 'एनोटेशन',
+      cached: 'एनोटेटेड',
+      remove: 'निकालें',
+      removeConfirm: 'इस एनोटेशन को हटाएं?',
+      add: 'एनोटेशन जोड़ें',
+      edit: 'एनोटेशन संपादित करें',
+    },
+    dataSet: {
+      title: 'प्रसंग',
+      noData: 'आप संदर्भ के रूप में ज्ञान आयात कर सकते हैं',
+      words: 'शब्द',
+      textBlocks: 'पाठ खंड',
+      selectTitle: 'संदर्भ ज्ञान का चयन करें',
+      selected: 'ज्ञान चुना गया',
+      noDataSet: 'कोई ज्ञान नहीं मिला',
+      toCreate: 'बनाने के लिए जाएं',
+      notSupportSelectMulti: 'वर्तमान में केवल एक ज्ञान का समर्थन करता है',
+      queryVariable: {
+        title: 'क्वेरी चर',
+        tip: 'इस चर को प्रसंग पुनर्प्राप्ति के लिए क्वेरी इनपुट के रूप में उपयोग किया जाएगा, इस चर के इनपुट से संबंधित प्रसंग जानकारी प्राप्त करना।',
+        choosePlaceholder: 'क्वेरी चर चुनें',
+        noVar: 'कोई चर नहीं',
+        noVarTip: 'कृपया वेरिएबल्स सेक्शन के तहत एक चर बनाएं',
+        unableToQueryDataSet: 'ज्ञान को क्वेरी करने में असमर्थ',
+        unableToQueryDataSetTip:
+          'ज्ञान को सफलतापूर्वक क्वेरी करने में असमर्थ, कृपया प्रसंग अनुभाग में एक संदर्भ क्वेरी चर चुनें।',
+        ok: 'ठीक है',
+        contextVarNotEmpty: 'संदर्भ क्वेरी चर खाली नहीं हो सकता',
+        deleteContextVarTitle: 'चर "{{varName}}" को हटाएं?',
+        deleteContextVarTip:
+          'इस चर को संदर्भ क्वेरी चर के रूप में सेट किया गया है, और इसे हटाने से ज्ञान का सामान्य उपयोग प्रभावित होगा। यदि आपको इसे अभी भी हटाने की आवश्यकता है, तो कृपया संदर्भ अनुभाग में इसे पुनः चुनें।',
+      },
+    },
+    tools: {
+      title: 'उपकरण',
+      tips: 'उपकरण उपयोगकर्ता इनपुट या चर को अनुरोध मापदंडों के रूप में लेते हुए बाहरी डेटा को संदर्भ के रूप में क्वेरी करने के लिए एक मानक एपीआई कॉल विधि प्रदान करते हैं।',
+      toolsInUse: '{{count}} उपयोग में उपकरण',
+      modal: {
+        title: 'उपकरण',
+        toolType: {
+          title: 'उपकरण प्रकार',
+          placeholder: 'कृपया उपकरण प्रकार चुनें',
+        },
+        name: {
+          title: 'नाम',
+          placeholder: 'कृपया नाम दर्ज करें',
+        },
+        variableName: {
+          title: 'चर का नाम',
+          placeholder: 'कृपया चर का नाम दर्ज करें',
+        },
+      },
+    },
+    conversationHistory: {
+      title: 'संवाद इतिहास',
+      description: 'संवाद भूमिकाओं के लिए उपसर्ग नाम सेट करें',
+      tip: 'संवाद इतिहास सक्षम नहीं है, कृपया ऊपर दिए गए प्रॉम्प्ट में <histories> जोड़ें।',
+      learnMore: 'और अधिक जानें',
+      editModal: {
+        title: 'संवाद भूमिका नाम संपादित करें',
+        userPrefix: 'उपयोगकर्ता उपसर्ग',
+        assistantPrefix: 'सहायक उपसर्ग',
+      },
+    },
+    toolbox: {
+      title: 'उपकरण बॉक्स',
+    },
+    moderation: {
+      title: 'सामग्री मॉडरेशन',
+      description:
+        'मॉडरेशन एपीआई का उपयोग करके या संवेदनशील शब्द सूची बनाए रखकर मॉडल आउटपुट को सुरक्षित करें।',
+      allEnabled: 'इनपुट/आउटपुट सामग्री सक्षम',
+      inputEnabled: 'इनपुट सामग्री सक्षम',
+      outputEnabled: 'आउटपुट सामग्री सक्षम',
+      modal: {
+        title: 'सामग्री मॉडरेशन सेटिंग्स',
+        provider: {
+          title: 'प्रदाता',
+          openai: 'ओपनएआई मॉडरेशन',
+          openaiTip: {
+            prefix: 'ओपनएआई मॉडरेशन के लिए',
+            suffix:
+              'में कॉन्फ़िगर किए गए ओपनएआई एपीआई कुंजी की आवश्यकता होती है।',
+          },
+          keywords: 'कीवर्ड',
+        },
+        keywords: {
+          tip: 'प्रत्येक पंक्ति में एक, पंक्ति विभाजनों से अलग। प्रति पंक्ति 100 अक्षरों तक।',
+          placeholder: 'प्रत्येक पंक्ति में एक, पंक्ति विभाजनों से अलग',
+          line: 'पंक्ति',
+        },
+        content: {
+          input: 'इनपुट सामग्री मॉडरेट करें',
+          output: 'आउटपुट सामग्री मॉडरेट करें',
+          preset: 'पूर्वनिर्धारित उत्तर',
+          placeholder: 'यहाँ पूर्वनिर्धारित उत्तर सामग्री डालें',
+          condition: 'इनपुट और आउटपुट सामग्री मॉडरेट करें सक्षम होनी चाहिए',
+          fromApi: 'पूर्वनिर्धारित उत्तर एपीआई द्वारा लौटाए जाते हैं',
+          errorMessage: 'पूर्वनिर्धारित उत्तर खाली नहीं हो सकते',
+          supportMarkdown: 'मार्कडाउन समर्थित',
+        },
+        openaiNotConfig: {
+          before: 'ओपनएआई मॉडरेशन के लिए',
+          after: 'में कॉन्फ़िगर किए गए ओपनएआई एपीआई कुंजी की आवश्यकता होती है।',
+        },
+      },
+    },
+  },
+  automatic: {
+    title: 'स्वचालित अनुप्रयोग आयोजन',
+    description:
+      'अपना परिदृश्य वर्णित करें, डिफाई आपके लिए एक अनुप्रयोग आयोजित करेगा।',
+    intendedAudience: 'लक्षित दर्शक कौन हैं?',
+    intendedAudiencePlaceHolder: 'उदा. छात्र',
+    solveProblem: 'वे कौन सी समस्याएं हैं जिन्हें एआई उनके लिए हल कर सकता है?',
+    solveProblemPlaceHolder:
+      'उदा. लंबे रिपोर्ट और लेख से अंतर्दृष्टि निकालें और जानकारी को संक्षेप में प्रस्तुत करें',
+    generate: 'उत्पन्न करें',
+    audiencesRequired: 'दर्शकों की आवश्यकता है',
+    problemRequired: 'समस्या आवश्यक है',
+    resTitle: 'हमने आपके लिए निम्नलिखित अनुप्रयोग आयोजित किया है।',
+    apply: 'इस आयोजन को लागू करें',
+    noData:
+      'बाईं ओर अपने उपयोग मामले का वर्णन करें, आयोजन पूर्वावलोकन यहाँ दिखाई देगा।',
+    loading: 'आपके लिए अनुप्रयोग आयोजित कर रहे हैं...',
+    overwriteTitle: 'मौजूदा कॉन्फ़िगरेशन को अधिलेखित करें?',
+    overwriteMessage:
+      'इस आयोजन को लागू करने से मौजूदा कॉन्फ़िगरेशन अधिलेखित हो जाएगा।',
+  },
+  resetConfig: {
+    title: 'रीसेट की पुष्टि करें?',
+    message:
+      'रीसेट परिवर्तनों को त्याग देता है, अंतिम प्रकाशित कॉन्फ़िगरेशन को पुनर्स्थापित करता है।',
+  },
+  errorMessage: {
+    nameOfKeyRequired: 'कुंजी का नाम: {{key}} आवश्यक',
+    valueOfVarRequired: '{{key}} मूल्य खाली नहीं हो सकता',
+    queryRequired: 'अनुरोध पाठ आवश्यक है।',
+    waitForResponse:
+      'कृपया पिछले संदेश की प्रतिक्रिया पूरी होने तक प्रतीक्षा करें।',
+    waitForBatchResponse:
+      'कृपया बैच कार्य की प्रतिक्रिया पूरी होने तक प्रतीक्षा करें।',
+    notSelectModel: 'कृपया एक मॉडल चुनें',
+    waitForImgUpload: 'कृपया छवि अपलोड होने तक प्रतीक्षा करें',
+  },
+  chatSubTitle: 'निर्देश',
+  completionSubTitle: 'प्रारंभिक प्रॉम्प्ट',
+  promptTip:
+    'प्रॉम्प्ट एआई प्रतिक्रियाओं को निर्देशों और सीमाओं के साथ मार्गदर्शन करता है। {{input}} जैसे वेरिएबल सम्मिलित करें। यह प्रॉम्प्ट उपयोगकर्ताओं को दिखाई नहीं देगा।',
+  formattingChangedTitle: 'स्वरूपण बदला गया',
+  formattingChangedText:
+    'स्वरूपण को संशोधित करने से डिबग क्षेत्र रीसेट हो जाएगा, क्या आप निश्चित हैं?',
+  variableTitle: 'वेरिएबल्स',
+  variableTip:
+    'उपयोगकर्ता वेरिएबल्स को भरते हैं, स्वचालित रूप से प्रॉम्प्ट में वेरिएबल्स को प्रतिस्थापित करते हैं।',
+  notSetVar:
+    'वेरिएबल्स उपयोगकर्ताओं को फॉर्म भरते समय प्रॉम्प्ट शब्द या प्रारंभिक टिप्पणी प्रस्तुत करने की अनुमति देते हैं। आप प्रॉम्प्ट शब्दों में \'{{input}}\' दर्ज करने का प्रयास कर सकते हैं।',
+  autoAddVar:
+    'प्रारंभिक प्रॉम्प्ट में निर्दिष्ट वेरिएबल्स अपरिभाषित हैं, क्या आप उन्हें उपयोगकर्ता इनपुट फॉर्म में जोड़ना चाहते हैं?',
+  variableTable: {
+    key: 'वेरिएबल कुंजी',
+    name: 'उपयोगकर्ता इनपुट फ़ील्ड नाम',
+    optional: 'वैकल्पिक',
+    type: 'इनपुट प्रकार',
+    action: 'क्रियाएँ',
+    typeString: 'स्ट्रिंग',
+    typeSelect: 'चुनें',
+  },
+  varKeyError: {
+    canNoBeEmpty: 'वेरिएबल कुंजी खाली नहीं हो सकती',
+    tooLong:
+      'वेरिएबल कुंजी: {{key}} बहुत लंबी है। 30 वर्णों से अधिक नहीं हो सकती',
+    notValid:
+      'वेरिएबल कुंजी: {{key}} अवैध है। केवल अक्षर, संख्याएं, और अंडरस्कोर शामिल हो सकते हैं',
+    notStartWithNumber:
+      'वेरिएबल कुंजी: {{key}} एक संख्या से प्रारंभ नहीं हो सकती',
+    keyAlreadyExists: 'वेरिएबल कुंजी: {{key}} पहले से मौजूद है',
+  },
+  otherError: {
+    promptNoBeEmpty: 'प्रॉम्प्ट खाली नहीं हो सकता',
+    historyNoBeEmpty: 'संवाद इतिहास प्रॉम्प्ट में सेट होना चाहिए',
+    queryNoBeEmpty: 'प्रश्न प्रॉम्प्ट में सेट होना चाहिए',
+  },
+  variableConig: {
+    'addModalTitle': 'इनपुट फ़ील्ड जोड़ें',
+    'editModalTitle': 'इनपुट फ़ील्ड संपादित करें',
+    'description': 'वेरिएबल {{varName}} के लिए सेटिंग',
+    'fieldType': 'फ़ील्ड प्रकार',
+    'string': 'छोटा पाठ',
+    'text-input': 'छोटा पाठ',
+    'paragraph': 'अनुच्छेद',
+    'select': 'चुनें',
+    'number': 'संख्या',
+    'notSet':
+      'सेट नहीं किया गया, प्रारंभिक प्रॉम्प्ट में {{input}} टाइप करने का प्रयास करें',
+    'stringTitle': 'फॉर्म टेक्स्ट बॉक्स विकल्प',
+    'maxLength': 'अधिकतम लंबाई',
+    'options': 'विकल्प',
+    'addOption': 'विकल्प जोड़ें',
+    'apiBasedVar': 'एपीआई-आधारित वेरिएबल',
+    'varName': 'वेरिएबल नाम',
+    'labelName': 'लेबल नाम',
+    'inputPlaceholder': 'कृपया इनपुट करें',
+    'content': 'सामग्री',
+    'required': 'आवश्यक',
+    'errorMsg': {
+      varNameRequired: 'वेरिएबल नाम आवश्यक है',
+      labelNameRequired: 'लेबल नाम आवश्यक है',
+      varNameCanBeRepeat: 'वेरिएबल नाम दोहराया नहीं जा सकता',
+      atLeastOneOption: 'कम से कम एक विकल्प आवश्यक है',
+      optionRepeat: 'विकल्प दोहराए गए हैं',
+    },
+  },
+  vision: {
+    name: 'विजन',
+    description:
+      'विजन सक्षम करने से मॉडल को छवियों को लेने और उनके बारे में प्रश्नों का उत्तर देने की अनुमति मिलेगी।',
+    settings: 'सेटिंग्स',
+    visionSettings: {
+      title: 'विजन सेटिंग्स',
+      resolution: 'रेज़ोल्यूशन',
+      resolutionTooltip:
+        'कम रेज़ोल्यूशन मॉडल को 512 x 512 पिक्सेल की कम-रेज़ोल्यूशन छवि प्राप्त करने की अनुमति देगा, और छवि को 65 टोकनों के बजट के साथ प्रस्तुत करेगा। इससे एपीआई को तेजी से उत्तर देने और कम इनपुट टोकनों का उपयोग करने की सुविधा मिलती है जो उच्च विवरण की आवश्यकता नहीं रखते हैं। \n उच्च रेज़ोल्यूशन पहले मॉडल को कम रेज़ोल्यूशन छवि देखने की अनुमति देगा और फिर इनपुट छवि के आकार के आधार पर 512px वर्ग के रूप में विस्तृत क्रॉप्स बनाएगा। प्रत्येक विस्तृत क्रॉप के लिए टोकन बजट दोगुना होता है, कुल 129 टोकन।',
+      high: 'उच्च',
+      low: 'कम',
+      uploadMethod: 'अपलोड विधि',
+      both: 'दोनों',
+      localUpload: 'स्थानीय अपलोड',
+      url: 'यूआरएल',
+      uploadLimit: 'अपलोड सीमा',
+    },
+  },
+  voice: {
+    name: 'वॉयस',
+    defaultDisplay: 'डिफ़ॉल्ट वॉयस',
+    description: 'टेक्स्ट टू स्पीच वॉयस सेटिंग्स',
+    settings: 'सेटिंग्स',
+    voiceSettings: {
+      title: 'वॉयस सेटिंग्स',
+      language: 'भाषा',
+      resolutionTooltip: 'टेक्स्ट-टू-स्पीच वॉयस सपोर्ट भाषा।',
+      voice: 'वॉयस',
+    },
+  },
+  openingStatement: {
+    title: 'संवाद प्रारंभक',
+    add: 'जोड़ें',
+    writeOpener: 'प्रारंभक लिखें',
+    placeholder:
+      'यहां अपना प्रारंभक संदेश लिखें, आप वेरिएबल्स का उपयोग कर सकते हैं, {{variable}} टाइप करने का प्रयास करें।',
+    openingQuestion: 'प्रारंभिक प्रश्न',
+    noDataPlaceHolder:
+      'उपयोगकर्ता के साथ संवाद प्रारंभ करने से एआई को संवादात्मक अनुप्रयोगों में उनके साथ निकट संबंध स्थापित करने में मदद मिल सकती है।',
+    varTip:
+      'आप वेरिएबल्स का उपयोग कर सकते हैं, {{variable}} टाइप करने का प्रयास करें',
+    tooShort:
+      'संवाद प्रारंभ करने के लिए कम से कम 20 शब्दों के प्रारंभिक प्रॉम्प्ट की आवश्यकता होती है।',
+    notIncludeKey:
+      'प्रारंभिक प्रॉम्प्ट में वेरिएबल शामिल नहीं है: {{key}}। कृपया इसे प्रारंभिक प्रॉम्प्ट में जोड़ें।',
+  },
+  modelConfig: {
+    model: 'मॉडल',
+    setTone: 'प्रतिक्रियाओं की टोन सेट करें',
+    title: 'मॉडल और पैरामीटर',
+    modeType: {
+      chat: 'चैट',
+      completion: 'पूर्ण',
+    },
+  },
+  inputs: {
+    title: 'डिबग और पूर्वावलोकन',
+    noPrompt:
+      'प्रारंभिक प्रॉम्प्ट इनपुट में कुछ प्रॉम्प्ट लिखने का प्रयास करें',
+    userInputField: 'उपयोगकर्ता इनपुट फ़ील्ड',
+    noVar:
+      'वेरिएबल के मूल्य को भरें, जिसे प्रत्येक नए सत्र के शुरू होने पर स्वचालित रूप से प्रॉम्प्ट शब्द में प्रतिस्थापित किया जाएगा।',
+    chatVarTip:
+      'वेरिएबल के मूल्य को भरें, जिसे प्रत्येक नए सत्र के शुरू होने पर स्वचालित रूप से प्रॉम्प्ट शब्द में प्रतिस्थापित किया जाएगा',
+    completionVarTip:
+      'वेरिएबल के मूल्य को भरें, जिसे प्रत्येक प्रश्न प्रस्तुत करने पर स्वचालित रूप से प्रॉम्प्ट शब्दों में प्रतिस्थापित किया जाएगा।',
+    previewTitle: 'प्रॉम्प्ट पूर्वावलोकन',
+    queryTitle: 'प्रश्न सामग्री',
+    queryPlaceholder: 'कृपया अनुरोध पाठ दर्ज करें।',
+    run: 'चालू करें',
+  },
+  result: 'आउटपुट टेक्स्ट',
+  datasetConfig: {
+    settingTitle: 'पुनःप्राप्ति सेटिंग्स',
+    knowledgeTip: 'ज्ञान जोड़ने के लिए "+" बटन पर क्लिक करें',
+    retrieveOneWay: {
+      title: 'N-से-1 पुनःप्राप्ति',
+      description:
+        'उपयोगकर्ता के इरादे और ज्ञान विवरणों के आधार पर, एजेंट स्वायत्त रूप से सर्वश्रेष्ठ ज्ञान का चयन करता है। विशिष्ट, सीमित ज्ञान वाले अनुप्रयोगों के लिए सर्वश्रेष्ठ।',
+    },
+    retrieveMultiWay: {
+      title: 'बहु-पथ पुनःप्राप्ति',
+      description:
+        'उपयोगकर्ता के इरादे के आधार पर, सभी ज्ञान पर प्रश्न करता है, बहु-स्रोतों से प्रासंगिक पाठ पुनः प्राप्त करता है, और पुनः रैंकिंग के बाद उपयोगकर्ता प्रश्न से मेल खाने वाले सर्वश्रेष्ठ परिणामों का चयन करता है। पुनः रैंक मॉडल एपीआई का कॉन्फ़िगरेशन आवश्यक है।',
+    },
+    rerankModelRequired: 'रिरैंक मॉडल आवश्यक है',
+    params: 'पैरामीटर',
+    top_k: 'शीर्ष K',
+    top_kTip:
+      'उपयोगकर्ता प्रश्नों के साथ सबसे अधिक समानता रखने वाले खंडों को फ़िल्टर करने के लिए उपयोग किया जाता है। चयनित मॉडल के max_tokens के अनुसार प्रणाली स्वचालित रूप से शीर्ष K के मूल्य को समायोजित करेगी।',
+    score_threshold: 'स्कोर थ्रेशोल्ड',
+    score_thresholdTip:
+      'खंडों को फ़िल्टर करने के लिए समानता थ्रेशोल्ड सेट करने के लिए उपयोग किया जाता है।',
+    retrieveChangeTip:
+      'सूचकांक मोड और पुनःप्राप्ति मोड को संशोधित करने से इस ज्ञान से जुड़े अनुप्रयोग प्रभावित हो सकते हैं।',
+  },
+  debugAsSingleModel: 'एकल मॉडल के रूप में डिबग करें',
+  debugAsMultipleModel: 'एकाधिक मॉडलों के रूप में डिबग करें',
+  duplicateModel: 'डुप्लिकेट',
+  publishAs: 'के रूप में प्रकाशित करें',
+  assistantType: {
+    name: 'सहायक प्रकार',
+    chatAssistant: {
+      name: 'मूल सहायक',
+      description: 'एक बड़े भाषा मॉडल का उपयोग करके एक चैट-आधारित सहायक बनाएं',
+    },
+    agentAssistant: {
+      name: 'एजेंट सहायक',
+      description:
+        'एक बुद्धिमान एजेंट बनाएं जो स्वायत्त रूप से कार्यों को पूरा करने के लिए उपकरण चुन सके',
+    },
+  },
+  agent: {
+    agentMode: 'एजेंट मोड',
+    agentModeDes: 'एजेंट के लिए अनुमान मोड का प्रकार सेट करें',
+    agentModeType: {
+      ReACT: 'रिएक्ट',
+      functionCall: 'फंक्शन कॉलिंग',
+    },
+    setting: {
+      name: 'एजेंट सेटिंग्स',
+      description:
+        'एजेंट सहायक सेटिंग्स एजेंट मोड और बिल्ट-इन प्रॉम्प्ट जैसे उन्नत फीचर्स सेट करने की अनुमति देती हैं, जो केवल एजेंट प्रकार में उपलब्ध हैं।',
+      maximumIterations: {
+        name: 'अधिकतम पुनरावृत्तियाँ',
+        description:
+          'एजेंट सहायक कितनी बार पुनरावृत्तियाँ कर सकता है इसकी सीमा निर्धारित करें',
+      },
+    },
+    buildInPrompt: 'बिल्ट-इन प्रॉम्प्ट',
+    firstPrompt: 'प्रथम प्रॉम्प्ट',
+    nextIteration: 'अगली पुनरावृत्ति',
+    promptPlaceholder: 'यहां अपना प्रॉम्प्ट लिखें',
+    tools: {
+      name: 'उपकरण',
+      description:
+        'उपकरणों का उपयोग करके एलएलएम की क्षमताओं का विस्तार किया जा सकता है, जैसे इंटरनेट पर खोज करना या वैज्ञानिक गणनाएँ करना',
+      enabled: 'सक्षम',
+    },
+  },
+}
+
+export default translation

+ 95 - 0
web/i18n/hi-IN/app-log.ts

@@ -0,0 +1,95 @@
+const translation = {
+  title: 'लॉग्स',
+  description: 'लॉग्स एप्लिकेशन के रनिंग स्टेटस को रिकॉर्ड करते हैं, जिसमें यूजर इनपुट और एआई रिप्लाईज़ शामिल हैं।',
+  dateTimeFormat: 'MM/DD/YYYY hh:mm A',
+  table: {
+    header: {
+      time: 'समय',
+      endUser: 'अंतिम उपयोगकर्ता',
+      input: 'इनपुट',
+      output: 'आउटपुट',
+      summary: 'शीर्षक',
+      messageCount: 'संदेशों की संख्या',
+      userRate: 'उपयोगकर्ता दर',
+      adminRate: 'ऑपरेटर दर',
+      startTime: 'शुरू करने का समय',
+      status: 'स्थिति',
+      runtime: 'रन टाइम',
+      tokens: 'टोकन',
+      user: 'अंतिम उपयोगकर्ता',
+      version: 'संस्करण',
+    },
+    pagination: {
+      previous: 'पिछला',
+      next: 'अगला',
+    },
+    empty: {
+      noChat: 'कोई बातचीत नहीं हुई',
+      noOutput: 'कोई आउटपुट नहीं',
+      element: {
+        title: 'क्या कोई वहाँ है?',
+        content:
+          'अंत उपयोगकर्ताओं और एआई एप्लिकेशन के बीच इंटरैक्शंस को देखें और एनोटेट करें ताकि एआई की सटीकता लगातार सुधारी जा सके। आप <shareLink>यहाँ शेयर</shareLink> या <testLink>परीक्षण</testLink> कर सकते हैं वेब ऐप अपने आप, फिर इस पृष्ठ पर लौटें।',
+      },
+    },
+  },
+  detail: {
+    time: 'समय',
+    conversationId: 'बातचीत आईडी',
+    promptTemplate: 'प्रॉम्प्ट टेम्पलेट',
+    promptTemplateBeforeChat: 'चैट से पहले प्रॉम्प्ट टेम्पलेट · सिस्टम मेसेज के रूप में',
+    annotationTip: '{{user}} द्वारा सुधार चिह्नित',
+    timeConsuming: '',
+    second: 'सेकंड',
+    tokenCost: 'टोकन खर्च',
+    loading: 'लोड हो रहा है',
+    operation: {
+      like: 'पसंद',
+      dislike: 'नापसंद',
+      addAnnotation: 'सुधार जोड़ें',
+      editAnnotation: 'सुधार संपादित करें',
+      annotationPlaceholder:
+        'एआई के लिए आपको वह अपेक्षित उत्तर दर्ज करें जिसका उपयोग भविष्य में मॉडल फ़ाइन-ट्यूनिंग और टेक्स्ट जनरेशन की गुणवत्ता में सुधार के लिए किया जा सकता है।',
+    },
+    variables: 'वेरिएबल्स',
+    uploadImages: 'अपलोड की गई छवियाँ',
+  },
+  filter: {
+    period: {
+      today: 'आज',
+      last7days: 'पिछले 7 दिन',
+      last4weeks: 'पिछले 4 सप्ताह',
+      last3months: 'पिछले 3 महीने',
+      last12months: 'पिछले 12 महीने',
+      monthToDate: 'माह तक तिथि',
+      quarterToDate: 'तिमाही तक तिथि',
+      yearToDate: 'वर्ष तक तिथि',
+      allTime: 'सभी समय',
+    },
+    annotation: {
+      all: 'सभी',
+      annotated: 'एनोटेट किए गए सुधार ({{count}} आइटम)',
+      not_annotated: 'एनोटेट नहीं किया गया',
+    },
+  },
+  workflowTitle: 'वर्कफ़्लो लॉग्स',
+  workflowSubtitle: 'यह लॉग ऑटोमेटे के ऑपरेशन को रिकॉर्ड करता है।',
+  runDetail: {
+    title: 'बातचीत लॉग',
+    workflowTitle: 'लॉग विवरण',
+  },
+  promptLog: 'प्रॉम्प्ट लॉग',
+  agentLog: 'एजेंट लॉग',
+  viewLog: 'व्यू लॉग',
+  agentLogDetail: {
+    agentMode: 'एजेंट मोड',
+    startTime: 'शुरू करने का समय',
+    endTime: 'समाप्ति समय',
+    duration: 'अवधि',
+    promptTemplate: 'प्रॉम्प्ट टेम्पलेट',
+    promptInput: 'प्रॉम्प्ट इनपुट',
+    response: 'प्रतिक्रिया',
+  },
+}
+
+export default translation

+ 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

@@ -0,0 +1,90 @@
+const translation = {
+  createApp: 'ऐप बनाएँ',
+  types: {
+    all: 'सभी',
+    chatbot: 'चैटबॉट',
+    agent: 'एजेंट',
+    workflow: 'वर्कफ़्लो',
+    completion: 'समाप्ति',
+  },
+  duplicate: 'डुप्लिकेट',
+  duplicateTitle: 'ऐप डुप्लिकेट करें',
+  export: 'डीएसएल निर्यात करें',
+  exportFailed: 'डीएसएल निर्यात विफल हुआ।',
+  importDSL: 'डीएसएल फ़ाइल आयात करें',
+  createFromConfigFile: 'डीएसएल फ़ाइल से बनाएँ',
+  deleteAppConfirmTitle: 'इस ऐप को हटाएँ?',
+  deleteAppConfirmContent:
+    'ऐप को हटाना अपरिवर्तनीय है। उपयोगकर्ता अब आपके ऐप तक पहुँचने में सक्षम नहीं होंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से हटा दिए जाएंगे।',
+  appDeleted: 'ऐप हटाया गया',
+  appDeleteFailed: 'ऐप हटाने में विफल',
+  join: 'समुदाय में शामिल हों',
+  communityIntro:
+    'टीम के सदस्यों, योगदानकर्ताओं और डेवलपर्स के साथ विभिन्न चैनलों पर चर्चा करें।',
+  roadmap: 'हमारा रोडमैप देखें',
+  newApp: {
+    startFromBlank: 'रिक्त से बनाएँ',
+    startFromTemplate: 'टेम्पलेट से बनाएँ',
+    captionAppType: 'आप किस प्रकार का ऐप बनाना चाहते हैं?',
+    chatbotDescription: 'एक चैट-आधारित एप्लिकेशन बनाएं। यह ऐप प्रश्न-उत्तर प्रारूप का उपयोग करता है, जिससे निरंतर बातचीत के कई राउंड संभव होते हैं।',
+    completionDescription: 'ऐसा एप्लिकेशन बनाएं जो प्रॉम्प्ट्स के आधार पर उच्च गुणवत्ता वाला टेक्स्ट उत्पन्न करता है, जैसे लेख, सारांश, अनुवाद आदि उत्पन्न करना।',
+    completionWarning: 'इस प्रकार के ऐप का समर्थन नहीं किया जाएगा।',
+    agentDescription: 'एक बुद्धिमान एजेंट बनाएं जो स्वायत्त रूप से टूल्स का चयन करके कार्य पूरा कर सके।',
+    workflowDescription: 'एक एप्लिकेशन बनाएं जो वर्कफ़्लो ऑर्केस्ट्रेट्स के साथ उच्च डिग्री के कस्टमाइज़ेशन के साथ उच्च गुणवत्ता वाला टेक्स्ट उत्पन्न करता है। यह अनुभवी उपयोगकर्ताओं के लिए उपयुक्त है।',
+    workflowWarning: 'वर्तमान में बीटा में',
+    chatbotType: 'चैटबॉट ऑर्केस्ट्रेट विधि',
+    basic: 'बेसिक',
+    basicTip: 'शुरुआती लोगों के लिए, बाद में चैटफ़्लो में स्विच कर सकते हैं',
+    basicFor: 'शुरुआती लोगों के लिए',
+    basicDescription: 'बेसिक ऑर्केस्ट्रेट चैटबॉट ऐप को सरल सेटिंग्स का उपयोग करके ऑर्केस्ट्रेट करने की अनुमति देता है, बिना अंतर्निहित प्रॉम्प्ट्स को संशोधित करने की क्षमता के। यह शुरुआती लोगों के लिए उपयुक्त है।',
+    advanced: 'चैटफ्लो',
+    advancedFor: 'अनुभवी उपयोगकर्ताओं के लिए',
+    advancedDescription: 'वर्कफ़्लो ऑर्केस्ट्रेट वर्कफ़्लोज़ के रूप में चैटबॉट्स को ऑर्केस्ट्रेट करता है, जिसमें अंतर्निहित प्रॉम्प्ट्स को संपादित करने की क्षमता सहित उच्च डिग्री का कस्टमाइज़ेशन होता है। यह अनुभवी उपयोगकर्ताओं के लिए उपयुक्त है।',
+    captionName: 'ऐप आइकन और नाम',
+    appNamePlaceholder: 'अपने ऐप को नाम दें',
+    captionDescription: 'विवरण',
+    appDescriptionPlaceholder: 'ऐप का विवरण दर्ज करें',
+    useTemplate: 'इस टेम्पलेट का उपयोग करें',
+    previewDemo: 'पूर्वावलोकन डेमो',
+    chatApp: 'सहायक',
+    chatAppIntro:
+      'मैं एक चैट-आधारित एप्लिकेशन बनाना चाहता हूँ। यह ऐप प्रश्न-उत्तर प्रारूप का उपयोग करता है, जिससे निरंतर बातचीत के कई राउंड संभव होते हैं।',
+    agentAssistant: 'नया एजेंट सहायक',
+    completeApp: 'टेक्स्ट जनरेटर',
+    completeAppIntro:
+      'मैं एक ऐसा एप्लिकेशन बनाना चाहता हूँ जो प्रॉम्प्ट्स के आधार पर उच्च गुणवत्ता वाला टेक्स्ट उत्पन्न करता है, जैसे लेख, सारांश, अनुवाद आदि उत्पन्न करना।',
+    showTemplates: 'मैं टेम्पलेट से चुनना चाहता हूँ',
+    hideTemplates: 'मोड चयन पर वापस जाएँ',
+    Create: 'बनाएँ',
+    Cancel: 'रद्द करें',
+    nameNotEmpty: 'नाम खाली नहीं हो सकता',
+    appTemplateNotSelected: 'कृपया एक टेम्पलेट चुनें',
+    appTypeRequired: 'कृपया एक ऐप प्रकार चुनें',
+    appCreated: 'ऐप बनाया गया',
+    appCreateFailed: 'ऐप बनाने में विफल',
+  },
+  editApp: 'जानकारी संपादित करें',
+  editAppTitle: 'ऐप जानकारी संपादित करें',
+  editDone: 'ऐप जानकारी अपडेट की गई',
+  editFailed: 'ऐप जानकारी अपडेट करने में विफल',
+  emoji: {
+    ok: 'ठीक है',
+    cancel: 'रद्द करें',
+  },
+  switch: 'वर्कफ़्लो ऑर्केस्ट्रेट पर स्विच करें',
+  switchTipStart: 'आपके लिए एक नई ऐप कॉपी बनाई जाएगी, और नई कॉपी वर्कफ़्लो ऑर्केस्ट्रेट में स्विच हो जाएगी। नई कॉपी ',
+  switchTip: 'की अनुमति नहीं देगा',
+  switchTipEnd: ' बेसिक ऑर्केस्ट्रेट में स्विच करना।',
+  switchLabel: 'बनाई जाने वाली ऐप कॉपी',
+  removeOriginal: 'मूल ऐप हटाएँ',
+  switchStart: 'स्विच शुरू करें',
+  typeSelector: {
+    all: 'सभी प्रकार',
+    chatbot: 'चैटबॉट',
+    agent: 'एजेंट',
+    workflow: 'वर्कफ़्लो',
+    completion: 'समाप्ति',
+  },
+}
+
+export default translation

+ 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

@@ -0,0 +1,587 @@
+const translation = {
+  api: {
+    success: 'सफलता',
+    actionSuccess: 'कार्रवाई सफल रही',
+    saved: 'सहेजा गया',
+    create: 'बनाया गया',
+    remove: 'हटाया गया',
+  },
+  operation: {
+    create: 'बनाएं',
+    confirm: 'पुष्टि करें',
+    cancel: 'रद्द करें',
+    clear: 'साफ करें',
+    save: 'सहेजें',
+    edit: 'संपादित करें',
+    add: 'जोड़ें',
+    added: 'जोड़ा गया',
+    refresh: 'पुनः प्रारंभ करें',
+    reset: 'रीसेट करें',
+    search: 'खोजें',
+    change: 'बदलें',
+    remove: 'हटाएं',
+    send: 'भेजें',
+    copy: 'कॉपी करें',
+    lineBreak: 'लाइन ब्रेक',
+    sure: 'मुझे यकीन है',
+    download: 'डाउनलोड करें',
+    delete: 'हटाएं',
+    settings: 'सेटिंग्स',
+    setup: 'सेटअप',
+    getForFree: 'मुफ्त में प्राप्त करें',
+    reload: 'पुनः लोड करें',
+    ok: 'ठीक है',
+    log: 'लॉग',
+    learnMore: 'अधिक जानें',
+    params: 'पैरामीटर',
+    duplicate: 'डुप्लिकेट',
+    rename: 'नाम बदलें',
+  },
+  errorMsg: {
+    fieldRequired: '{{field}} आवश्यक है',
+    urlError: 'url को http:// या https:// से शुरू होना चाहिए',
+  },
+  placeholder: {
+    input: 'कृपया दर्ज करें',
+    select: 'कृपया चयन करें',
+  },
+  voice: {
+    language: {
+      zhHans: 'चीनी',
+      zhHant: 'पारंपरिक चीनी',
+      enUS: 'अंग्रेज़ी',
+      deDE: 'जर्मन',
+      frFR: 'फ्रेंच',
+      esES: 'स्पेनिश',
+      itIT: 'इतालवी',
+      thTH: 'थाई',
+      idID: 'इंडोनेशियाई',
+      jaJP: 'जापानी',
+      koKR: 'कोरियाई',
+      ptBR: 'पुर्तगाली',
+      ruRU: 'रूसी',
+      ukUA: 'यूक्रेनी',
+      viVN: 'वियतनामी',
+      plPL: 'पोलिश',
+    },
+  },
+  unit: {
+    char: 'वर्ण',
+  },
+  actionMsg: {
+    noModification: 'इस समय कोई संशोधन नहीं।',
+    modifiedSuccessfully: 'सफलतापूर्वक संशोधित किया गया',
+    modifiedUnsuccessfully: 'संशोधन असफल रहा',
+    copySuccessfully: 'सफलतापूर्वक कॉपी किया गया',
+    paySucceeded: 'भुगतान सफल रहा',
+    payCancelled: 'भुगतान रद्द कर दिया गया',
+    generatedSuccessfully: 'सफलतापूर्वक उत्पन्न हुआ',
+    generatedUnsuccessfully: 'उत्पन्न असफल रहा',
+  },
+  model: {
+    params: {
+      temperature: 'तापमान',
+      temperatureTip:
+        'अनियमितता को नियंत्रित करता है: कम करने से कम अनियमित पूर्णताएं होती हैं। जैसे ही तापमान शून्य के करीब आता है, मॉडल निर्धारक और दोहराव वाला हो जाएगा।',
+      top_p: 'टॉप P',
+      top_pTip:
+        'नाभिक नमूनाकरण के माध्यम से विविधता को नियंत्रित करता है: 0.5 का मतलब है कि सभी संभाव्यता-भारित विकल्पों में से आधे को माना जाता है।',
+      presence_penalty: 'उपस्थिति दंड',
+      presence_penaltyTip:
+        'नए टोकनों को दंडित करने की मात्रा इस पर आधारित है कि वे अब तक के पाठ में दिखाई देते हैं या नहीं।\nयह मॉडल की संभावना को नए विषयों पर बात करने के लिए बढ़ाता है।',
+      frequency_penalty: 'आवृत्ति दंड',
+      frequency_penaltyTip:
+        'नए टोकनों को दंडित करने की मात्रा इस पर आधारित है कि वे अब तक के पाठ में कितनी बार दिखाई दिए हैं।\nयह मॉडल की संभावना को एक ही पंक्ति को शब्दशः दोहराने की संभावना को कम करता है।',
+      max_tokens: 'अधिकतम टोकन',
+      max_tokensTip:
+        'प्रतिक्रिया की अधिकतम लंबाई को टोकनों में सीमित करने के लिए उपयोग किया जाता है। \nबड़ी मानों से प्रॉम्प्ट शब्दों, चैट लॉग्स और ज्ञान के लिए छोड़ी गई जगह सीमित हो सकती है। \nइसे दो-तिहाई से नीचे सेट करने की सिफारिश की जाती है\ngpt-4-1106-preview, gpt-4-vision-preview अधिकतम टोकन (इनपुट 128k आउटपुट 4k)',
+      maxTokenSettingTip:
+        'आपकी अधिकतम टोकन सेटिंग उच्च है, जो प्रॉम्प्ट, क्वेरी और डेटा के लिए जगह को सीमित कर सकती है। इसे 2/3 से नीचे सेट करने पर विचार करें।',
+      setToCurrentModelMaxTokenTip:
+        'अधिकतम टोकन को वर्तमान मॉडल {{maxToken}} के 80% अधिकतम टोकन पर अपडेट किया गया है।',
+      stop_sequences: 'रोकने का अनुक्रम',
+      stop_sequencesTip:
+        'चार अनुक्रमों तक जहां API आगे के टोकन उत्पन्न करना बंद कर देगा। लौटाए गए पाठ में स्टॉप अनुक्रम शामिल नहीं होगा।',
+      stop_sequencesPlaceholder: 'अनुक्रम दर्ज करें और टैब दबाएं',
+    },
+    tone: {
+      Creative: 'रचनात्मक',
+      Balanced: 'संतुलित',
+      Precise: 'सटीक',
+      Custom: 'कस्टम',
+    },
+    addMoreModel: 'अधिक मॉडल जोड़ने के लिए सेटिंग्स पर जाएं',
+  },
+  menus: {
+    status: 'बीटा',
+    explore: 'अन्वेषण करें',
+    apps: 'स्टूडियो',
+    plugins: 'प्लगइन्स',
+    pluginsTips:
+      'थर्ड-पार्टी प्लगइन्स को एकीकृत करें या ChatGPT-संगत AI-Plugins बनाएं।',
+    datasets: 'ज्ञान',
+    datasetsTips:
+      'जल्द आ रहा है: अपने स्वयं के टेक्स्ट डेटा आयात करें या LLM संदर्भ संवर्धन के लिए रियल-टाइम में वेबहुक के माध्यम से डेटा लिखें।',
+    newApp: 'नया ऐप',
+    newDataset: 'ज्ञान बनाएं',
+    tools: 'उपकरण',
+  },
+  userProfile: {
+    settings: 'सेटिंग्स',
+    workspace: 'वर्कस्पेस',
+    createWorkspace: 'वर्कस्पेस बनाएं',
+    helpCenter: 'सहायता',
+    roadmapAndFeedback: 'प्रतिक्रिया',
+    community: 'समुदाय',
+    about: 'के बारे में',
+    logout: 'लॉग आउट',
+  },
+  settings: {
+    accountGroup: 'खाता',
+    workplaceGroup: 'कार्यस्थल',
+    account: 'मेरा खाता',
+    members: 'सदस्य',
+    billing: 'बिलिंग',
+    integrations: 'एकीकरण',
+    language: 'भाषा',
+    provider: 'मॉडल प्रदाता',
+    dataSource: 'डेटा स्रोत',
+    plugin: 'प्लगइन्स',
+    apiBasedExtension: 'API विस्तार',
+  },
+  account: {
+    avatar: 'अवतार',
+    name: 'नाम',
+    email: 'ईमेल',
+    password: 'पासवर्ड',
+    passwordTip:
+      'यदि आप अस्थायी लॉगिन कोड का उपयोग नहीं करना चाहते हैं तो आप एक स्थायी पासवर्ड सेट कर सकते हैं',
+    setPassword: 'पासवर्ड सेट करें',
+    resetPassword: 'पासवर्ड रीसेट करें',
+    currentPassword: 'वर्तमान पासवर्ड',
+    newPassword: 'नया पासवर्ड',
+    confirmPassword: 'पासवर्ड की पुष्टि करें',
+    notEqual: 'दो पासवर्ड अलग हैं।',
+    langGeniusAccount: 'Dify खाता',
+    langGeniusAccountTip: 'आपका Dify खाता और संबंधित उपयोगकर्ता डेटा।',
+    editName: 'नाम संपादित करें',
+    showAppLength: '{{length}} ऐप्स दिखाएं',
+  },
+  members: {
+    team: 'टीम',
+    invite: 'जोड़ें',
+    name: 'नाम',
+    lastActive: 'अंतिम सक्रियता',
+    role: 'भूमिकाएं',
+    pending: 'लंबित...',
+    owner: 'मालिक',
+    admin: 'प्रशासक',
+    adminTip: 'ऐप्स बना सकते हैं और टीम सेटिंग्स का प्रबंधन कर सकते हैं',
+    normal: 'सामान्य',
+    normalTip: 'केवल ऐप्स का उपयोग कर सकते हैं, ऐप्स नहीं बना सकते',
+    builder: 'निर्माता',
+    builderTip: 'अपने स्वयं के ऐप्स बना और संपादित कर सकते हैं',
+    editor: 'संपादक',
+    editorTip: 'ऐप्स बना और संपादित कर सकते हैं',
+    inviteTeamMember: 'टीम सदस्य जोड़ें',
+    inviteTeamMemberTip:
+      'वे साइन इन करने के बाद सीधे आपकी टीम डेटा तक पहुंच सकते हैं।',
+    email: 'ईमेल',
+    emailInvalid: 'अवैध ईमेल प्रारूप',
+    emailPlaceholder: 'कृपया ईमेल दर्ज करें',
+    sendInvite: 'आमंत्रण भेजें',
+    invitedAsRole: '{{role}} उपयोगकर्ता के रूप में आमंत्रित किया गया',
+    invitationSent: 'आमंत्रण भेजा गया',
+    invitationSentTip:
+      'आमंत्रण भेजा गया, और वे साइन इन करके आपकी टीम डेटा तक पहुंच सकते हैं।',
+    invitationLink: 'आमंत्रण लिंक',
+    failedinvitationEmails:
+      'नीचे दिए गए उपयोगकर्ताओं को सफलतापूर्वक आमंत्रित नहीं किया गया',
+    ok: 'ठीक है',
+    removeFromTeam: 'टीम से हटाएं',
+    removeFromTeamTip: 'टीम पहुंच को हटा देगा',
+    setAdmin: 'प्रशासक के रूप में सेट करें',
+    setMember: 'सामान्य सदस्य के रूप में सेट करें',
+    setBuilder: 'निर्माता के रूप में सेट करें',
+    setEditor: 'संपादक के रूप में सेट करें',
+    disinvite: 'आमंत्रण रद्द करें',
+    deleteMember: 'सदस्य को हटाएं',
+    you: '(आप)',
+  },
+  integrations: {
+    connected: 'कनेक्टेड',
+    google: 'गूगल',
+    googleAccount: 'गूगल खाते के साथ लॉगिन करें',
+    github: 'GitHub',
+    githubAccount: 'GitHub खाते के साथ लॉगिन करें',
+    connect: 'कनेक्ट करें',
+  },
+  language: {
+    displayLanguage: 'प्रदर्शन भाषा',
+    timezone: 'समय क्षेत्र',
+  },
+  provider: {
+    apiKey: 'एपीआई कुंजी',
+    enterYourKey: 'अपनी एपीआई कुंजी यहां दर्ज करें',
+    invalidKey: 'अमान्य OpenAI एपीआई कुंजी',
+    validatedError: 'सत्यापन विफल: ',
+    validating: 'कुंजी का सत्यापन हो रहा है...',
+    saveFailed: 'एपीआई कुंजी सहेजना विफल रहा',
+    apiKeyExceedBill: 'इस एपीआई कुंजी में कोई कोटा उपलब्ध नहीं है, कृपया पढ़ें',
+    addKey: 'कुंजी जोड़ें',
+    comingSoon: 'जल्द आ रहा है',
+    editKey: 'संपादित करें',
+    invalidApiKey: 'अमान्य एपीआई कुंजी',
+    azure: {
+      apiBase: 'एपीआई आधार',
+      apiBasePlaceholder: 'आपके Azure OpenAI एंडपॉइंट का एपीआई आधार URL।',
+      apiKey: 'एपीआई कुंजी',
+      apiKeyPlaceholder: 'अपनी एपीआई कुंजी यहां दर्ज करें',
+      helpTip: 'Azure OpenAI सेवा के बारे में जानें',
+    },
+    openaiHosted: {
+      openaiHosted: 'होस्टेड OpenAI',
+      onTrial: 'परीक्षण पर',
+      exhausted: 'कोटा समाप्त',
+      desc: 'Dify द्वारा प्रदान की गई OpenAI होस्टिंग सेवा आपको GPT-3.5 जैसे मॉडल का उपयोग करने की अनुमति देती है। आपके परीक्षण कोटा के समाप्त होने से पहले, आपको अन्य मॉडल प्रदाताओं को सेट करने की आवश्यकता है।',
+      callTimes: 'कॉल बार',
+      usedUp: 'परीक्षण कोटा समाप्त हो गया। अपना मॉडल प्रदाता जोड़ें।',
+      useYourModel: 'वर्तमान में अपना मॉडल प्रदाता उपयोग कर रहे हैं।',
+      close: 'बंद करें',
+    },
+    anthropicHosted: {
+      anthropicHosted: 'Anthropic Claude',
+      onTrial: 'परीक्षण पर',
+      exhausted: 'कोटा समाप्त',
+      desc: 'शक्तिशाली मॉडल, जो परिष्कृत संवाद और रचनात्मक सामग्री निर्माण से लेकर विस्तृत निर्देश तक की विस्तृत श्रेणी के कार्यों में उत्कृष्ट है।',
+      callTimes: 'कॉल बार',
+      usedUp: 'परीक्षण कोटा समाप्त हो गया। अपना मॉडल प्रदाता जोड़ें।',
+      useYourModel: 'वर्तमान में अपना मॉडल प्रदाता उपयोग कर रहे हैं।',
+      close: 'बंद करें',
+    },
+    anthropic: {
+      using: 'एम्बेडिंग क्षमता का उपयोग कर रहा है',
+      enableTip:
+        'Anthropic मॉडल को सक्षम करने के लिए, आपको पहले OpenAI या Azure OpenAI सेवा से जुड़ने की आवश्यकता है।',
+      notEnabled: 'सक्षम नहीं',
+      keyFrom: 'Anthropic से अपनी एपीआई कुंजी प्राप्त करें',
+    },
+    encrypted: {
+      front: 'आपकी एपीआई कुंजी को एन्क्रिप्ट किया जाएगा और संग्रहीत किया जाएगा',
+      back: ' तकनीक का उपयोग करके।',
+    },
+  },
+  modelProvider: {
+    notConfigured:
+      'सिस्टम मॉडल को अभी पूरी तरह से कॉन्फ़िगर नहीं किया गया है, और कुछ कार्य उपलब्ध नहीं हो सकते हैं।',
+    systemModelSettings: 'सिस्टम मॉडल सेटिंग्स',
+    systemModelSettingsLink: 'सिस्टम मॉडल सेट करना क्यों आवश्यक है?',
+    selectModel: 'अपने मॉडल का चयन करें',
+    setupModelFirst: 'कृपया पहले अपना मॉडल सेट करें',
+    systemReasoningModel: {
+      key: 'सिस्टम तर्क मॉडल',
+      tip: 'ऐप्लिकेशन बनाने के लिए उपयोग किए जाने वाले डिफ़ॉल्ट अनुमान मॉडल को सेट करें, साथ ही संवाद नाम पीढ़ी और अगले प्रश्न सुझाव जैसी सुविधाएँ भी डिफ़ॉल्ट अनुमान मॉडल का उपयोग करेंगी।',
+    },
+    embeddingModel: {
+      key: 'एंबेडिंग मॉडल',
+      tip: 'ज्ञान के दस्तावेज़ एंबेडिंग प्रोसेसिंग के लिए डिफ़ॉल्ट मॉडल सेट करें, ज्ञान की पुनः प्राप्ति और आयात दोनों के लिए इस एंबेडिंग मॉडल का उपयोग वेक्टराइजेशन प्रोसेसिंग के लिए किया जाता है। स्विच करने से आयातित ज्ञान और प्रश्न के बीच वेक्टर आयाम असंगत हो जाएगा, जिससे पुनः प्राप्ति विफल हो जाएगी। पुनः प्राप्ति विफलता से बचने के लिए, कृपया इस मॉडल को मनमाने ढंग से स्विच न करें।',
+      required: 'एंबेडिंग मॉडल आवश्यक है',
+    },
+    speechToTextModel: {
+      key: 'भाषण-से-पाठ मॉडल',
+      tip: 'संवाद में भाषण-से-पाठ इनपुट के लिए डिफ़ॉल्ट मॉडल सेट करें।',
+    },
+    ttsModel: {
+      key: 'पाठ-से-भाषण मॉडल',
+      tip: 'संवाद में पाठ-से-भाषण इनपुट के लिए डिफ़ॉल्ट मॉडल सेट करें।',
+    },
+    rerankModel: {
+      key: 'रीरैंक मॉडल',
+      tip: 'रीरैंक मॉडल उपयोगकर्ता प्रश्न के साथ सांविधिक मेल के आधार पर उम्मीदवार दस्तावेज़ सूची को पुनः क्रमित करेगा, सांविधिक रैंकिंग के परिणामों में सुधार करेगा।',
+    },
+    apiKey: 'API-KEY',
+    quota: 'कोटा',
+    searchModel: 'खोज मॉडल',
+    noModelFound: '{{model}} के लिए कोई मॉडल नहीं मिला',
+    models: 'मॉडल्स',
+    showMoreModelProvider: 'अधिक मॉडल प्रदाता दिखाएं',
+    selector: {
+      tip: 'इस मॉडल को हटा दिया गया है। कृपया एक मॉडल जोड़ें या किसी अन्य मॉडल का चयन करें।',
+      emptyTip: 'कोई उपलब्ध मॉडल नहीं',
+      emptySetting: 'कॉन्फ़िगर करने के लिए कृपया सेटिंग्स पर जाएं',
+      rerankTip: 'कृपया रीरैंक मॉडल सेट करें',
+    },
+    card: {
+      quota: 'कोटा',
+      onTrial: 'परीक्षण पर',
+      paid: 'भुगतान किया हुआ',
+      quotaExhausted: 'कोटा समाप्त',
+      callTimes: 'कॉल समय',
+      tokens: 'टोकन',
+      buyQuota: 'कोटा खरीदें',
+      priorityUse: 'प्राथमिकता उपयोग',
+      removeKey: 'API कुंजी निकालें',
+      tip: 'भुगतान किए गए कोटा को प्राथमिकता दी जाएगी। भुगतान किए गए कोटा के समाप्त होने के बाद परीक्षण कोटा का उपयोग किया जाएगा।',
+    },
+    item: {
+      deleteDesc:
+        '{{modelName}} को सिस्टम तर्क मॉडल के रूप में उपयोग किया जा रहा है। हटाने के बाद कुछ कार्य उपलब्ध नहीं होंगे। कृपया पुष्टि करें।',
+      freeQuota: 'मुफ्त कोटा',
+    },
+    addApiKey: 'अपनी API कुंजी जोड़ें',
+    invalidApiKey: 'अवैध API कुंजी',
+    encrypted: {
+      front: 'आपकी API KEY को एन्क्रिप्ट और संग्रहीत किया जाएगा',
+      back: ' तकनीक का उपयोग करके।',
+    },
+    freeQuota: {
+      howToEarn: 'कैसे कमाएं',
+    },
+    addMoreModelProvider: 'अधिक मॉडल प्रदाता जोड़ें',
+    addModel: 'मॉडल जोड़ें',
+    modelsNum: '{{num}} मॉडल्स',
+    showModels: 'मॉडल्स दिखाएं',
+    showModelsNum: '{{num}} मॉडल्स दिखाएं',
+    collapse: 'संक्षिप्त करें',
+    config: 'कॉन्फ़िग',
+    modelAndParameters: 'मॉडल और पैरामीटर',
+    model: 'मॉडल',
+    featureSupported: '{{feature}} समर्थित',
+    callTimes: 'कॉल समय',
+    credits: 'संदेश क्रेडिट्स',
+    buyQuota: 'कोटा खरीदें',
+    getFreeTokens: 'मुफ्त टोकन प्राप्त करें',
+    priorityUsing: 'प्राथमिकता का उपयोग',
+    deprecated: 'अप्रचलित',
+    confirmDelete: 'हटाने की पुष्टि करें?',
+    quotaTip: 'बचे हुए उपलब्ध मुफ्त टोकन',
+    loadPresets: 'प्रस्ताव प्रस्तुत करें',
+    parameters: 'पैरामीटर',
+    loadBalancing: 'लोड बैलेंसिंग',
+    loadBalancingDescription: 'कई सेट्स की साख के साथ दबाव कम करें।',
+    loadBalancingHeadline: 'लोड बैलेंसिंग',
+    configLoadBalancing: 'लोड बैलेंसिंग कॉन्फ़िग करें',
+    modelHasBeenDeprecated: 'यह मॉडल अप्रचलित हो गया है',
+    providerManaged: 'प्रदाता प्रबंधित',
+    providerManagedDescription:
+      'मॉडल प्रदाता द्वारा प्रदान की गई एकल सेट की साख का उपयोग करें।',
+    defaultConfig: 'डिफ़ॉल्ट कॉन्फ़िग',
+    apiKeyStatusNormal: 'APIKey की स्थिति सामान्य है',
+    apiKeyRateLimit: 'रेट सीमा पहुंच गई, {{seconds}}s के बाद उपलब्ध',
+    addConfig: 'कॉन्फ़िग जोड़ें',
+    editConfig: 'कॉन्फ़िग संपादित करें',
+    loadBalancingLeastKeyWarning:
+      'लोड बैलेंसिंग सक्षम करने के लिए कम से कम 2 कुंजियों को सक्षम होना चाहिए।',
+    loadBalancingInfo:
+      'डिफ़ॉल्ट रूप से, लोड बैलेंसिंग राउंड-रॉबिन रणनीति का उपयोग करता है। यदि रेट लिमिटिंग ट्रिगर हो जाती है, तो 1 मिनट का कूलडाउन पीरियड लागू होगा।',
+    upgradeForLoadBalancing:
+      'लोड बैलेंसिंग सक्षम करने के लिए अपनी योजना अपग्रेड करें।',
+  },
+  dataSource: {
+    add: 'डेटा स्रोत जोड़ें',
+    connect: 'कनेक्ट करें',
+    configure: 'कॉन्फ़िगर करें',
+    notion: {
+      title: 'Notion',
+      description: 'ज्ञान के लिए डेटा स्रोत के रूप में Notion का उपयोग करना।',
+      connectedWorkspace: 'कनेक्टेड कार्यस्थान',
+      addWorkspace: 'कार्यस्थान जोड़ें',
+      connected: 'कनेक्टेड',
+      disconnected: 'डिस्कनेक्टेड',
+      changeAuthorizedPages: 'अधिकृत पृष्ठ बदलें',
+      pagesAuthorized: 'अधिकृत पृष्ठ',
+      sync: 'सिंक करें',
+      remove: 'हटाएं',
+      selector: {
+        pageSelected: 'चयनित पृष्ठ',
+        searchPages: 'पृष्ठ खोजें...',
+        noSearchResult: 'कोई खोज परिणाम नहीं',
+        addPages: 'पृष्ठ जोड़ें',
+        preview: 'पूर्वावलोकन',
+      },
+    },
+    website: {
+      title: 'वेबसाइट',
+      description: 'वेब क्रॉलर का उपयोग करके वेबसाइटों से सामग्री आयात करें।',
+      with: 'के साथ',
+      configuredCrawlers: 'कॉन्फ़िगर किए गए क्रॉलर',
+      active: 'सक्रिय',
+      inactive: 'निष्क्रिय',
+    },
+  },
+  plugin: {
+    serpapi: {
+      apiKey: 'एपीआई कुंजी',
+      apiKeyPlaceholder: 'अपनी एपीआई कुंजी दर्ज करें',
+      keyFrom: 'SerpAPI खाता पृष्ठ से अपनी SerpAPI कुंजी प्राप्त करें',
+    },
+  },
+  apiBasedExtension: {
+    title:
+      'एपीआई एक्सटेंशन केंद्रीकृत एपीआई प्रबंधन प्रदान करते हैं, जो Dify के अनुप्रयोगों में आसान उपयोग के लिए कॉन्फ़िगरेशन को सरल बनाते हैं।',
+    link: 'अपना खुद का एपीआई एक्सटेंशन कैसे विकसित करें, यह जानें।',
+    linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
+    add: 'एपीआई एक्सटेंशन जोड़ें',
+    selector: {
+      title: 'एपीआई एक्सटेंशन',
+      placeholder: 'कृपया एपीआई एक्सटेंशन चुनें',
+      manage: 'एपीआई एक्सटेंशन प्रबंधित करें',
+    },
+    modal: {
+      title: 'एपीआई एक्सटेंशन जोड़ें',
+      editTitle: 'एपीआई एक्सटेंशन संपादित करें',
+      name: {
+        title: 'नाम',
+        placeholder: 'कृपया नाम दर्ज करें',
+      },
+      apiEndpoint: {
+        title: 'एपीआई एंडपॉइंट',
+        placeholder: 'कृपया एपीआई एंडपॉइंट दर्ज करें',
+      },
+      apiKey: {
+        title: 'एपीआई-कुंजी',
+        placeholder: 'कृपया एपीआई-कुंजी दर्ज करें',
+        lengthError: 'एपीआई-कुंजी की लंबाई 5 अक्षरों से कम नहीं हो सकती',
+      },
+    },
+    type: 'प्रकार',
+  },
+  about: {
+    changeLog: 'परिवर्तन लॉग',
+    updateNow: 'अभी अपडेट करें',
+    nowAvailable: 'Dify {{version}} अब उपलब्ध है।',
+    latestAvailable: 'Dify {{version}} नवीनतम उपलब्ध संस्करण है।',
+  },
+  appMenus: {
+    overview: 'अवलोकन',
+    promptEng: 'समन्वय करें',
+    apiAccess: 'API एक्सेस',
+    logAndAnn: 'लॉग्स और घोषणाएँ',
+    logs: 'लॉग्स',
+  },
+  environment: {
+    testing: 'परीक्षण',
+    development: 'विकास',
+  },
+  appModes: {
+    completionApp: 'पाठ जनरेटर',
+    chatApp: 'चैट ऐप',
+  },
+  datasetMenus: {
+    documents: 'दस्तावेज़',
+    hitTesting: 'पुनः प्राप्ति परीक्षण',
+    settings: 'सेटिंग्स',
+    emptyTip:
+      'ज्ञान को संबद्ध नहीं किया गया है, कृपया संबद्धता पूरी करने के लिए एप्लिकेशन या प्लग-इन पर जाएं।',
+    viewDoc: 'दस्तावेज़ देखें',
+    relatedApp: 'संबंधित ऐप्स',
+  },
+  voiceInput: {
+    speaking: 'अब बोलें...',
+    converting: 'पाठ में परिवर्तित हो रहा है...',
+    notAllow: 'माइक्रोफोन अधिकृत नहीं है',
+  },
+  modelName: {
+    'gpt-3.5-turbo': 'GPT-3.5-Turbo',
+    'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
+    'gpt-4': 'GPT-4',
+    'gpt-4-32k': 'GPT-4-32K',
+    'text-davinci-003': 'Text-Davinci-003',
+    'text-embedding-ada-002': 'Text-Embedding-Ada-002',
+    'whisper-1': 'Whisper-1',
+    'claude-instant-1': 'Claude-Instant',
+    'claude-2': 'Claude-2',
+  },
+  chat: {
+    renameConversation: 'संवाद का नाम बदलें',
+    conversationName: 'संवाद का नाम',
+    conversationNamePlaceholder: 'कृपया संवाद का नाम दर्ज करें',
+    conversationNameCanNotEmpty: 'संवाद का नाम आवश्यक है',
+    citation: {
+      title: 'उद्धरण',
+      linkToDataset: 'ज्ञान से लिंक करें',
+      characters: 'वर्ण:',
+      hitCount: 'पुनः प्राप्ति गिनती:',
+      vectorHash: 'वेक्टर हैश:',
+      hitScore: 'पुनः प्राप्ति स्कोर:',
+    },
+  },
+  promptEditor: {
+    placeholder:
+      'अपना प्रॉम्प्ट शब्द यहां लिखें, वेरिएबल डालने के लिए \'{\' दर्ज करें, प्रॉम्प्ट सामग्री ब्लॉक डालने के लिए \'/\' दर्ज करें',
+    context: {
+      item: {
+        title: 'संदर्भ',
+        desc: 'संदर्भ टेम्पलेट डालें',
+      },
+      modal: {
+        title: 'संदर्भ में {{num}} ज्ञान',
+        add: 'संदर्भ जोड़ें',
+        footer:
+          'आप नीचे दिए गए संदर्भ अनुभाग में संदर्भों का प्रबंधन कर सकते हैं।',
+      },
+    },
+    history: {
+      item: {
+        title: 'वार्तालाप इतिहास',
+        desc: 'ऐतिहासिक संदेश टेम्पलेट डालें',
+      },
+      modal: {
+        title: 'उदाहरण',
+        user: 'नमस्ते',
+        assistant: 'नमस्ते! मैं आज आपकी कैसे सहायता कर सकता हूं?',
+        edit: 'वार्तालाप भूमिका नाम संपादित करें',
+      },
+    },
+    variable: {
+      item: {
+        title: 'वेरिएबल और बाहरी उपकरण',
+        desc: 'वेरिएबल और बाहरी उपकरण डालें',
+      },
+      outputToolDisabledItem: {
+        title: 'वेरिएबल',
+        desc: 'वेरिएबल डालें',
+      },
+      modal: {
+        add: 'नया वेरिएबल',
+        addTool: 'नया उपकरण',
+      },
+    },
+    query: {
+      item: {
+        title: 'क्वेरी',
+        desc: 'उपयोगकर्ता क्वेरी टेम्पलेट डालें',
+      },
+    },
+    existed: 'पहले से ही प्रॉम्प्ट में मौजूद है',
+  },
+  imageUploader: {
+    uploadFromComputer: 'कंप्यूटर से अपलोड करें',
+    uploadFromComputerReadError: 'छवि पढ़ना विफल रहा, कृपया पुनः प्रयास करें।',
+    uploadFromComputerUploadError:
+      'छवि अपलोड विफल रहा, कृपया फिर से अपलोड करें।',
+    uploadFromComputerLimit:
+      'अपलोड की गई छवियाँ {{size}} MB से अधिक नहीं हो सकतीं',
+    pasteImageLink: 'छवि लिंक पेस्ट करें',
+    pasteImageLinkInputPlaceholder: 'छवि लिंक यहाँ पेस्ट करें',
+    pasteImageLinkInvalid: 'अमान्य छवि लिंक',
+    imageUpload: 'छवि अपलोड',
+  },
+  tag: {
+    placeholder: 'सभी टैग्स',
+    addNew: 'नया टैग जोड़ें',
+    noTag: 'कोई टैग नहीं',
+    noTagYet: 'अभी तक कोई टैग नहीं',
+    addTag: 'टैग जोड़ें',
+    editTag: 'टैग संपादित करें',
+    manageTags: 'टैग प्रबंधित करें',
+    selectorPlaceholder: 'खोजने या बनाने के लिए टाइप करें',
+    create: 'बनाएं',
+    delete: 'टैग हटाएं',
+    deleteTip: 'टैग का उपयोग किया जा रहा है, क्या इसे हटाना है?',
+    created: 'टैग सफलतापूर्वक बनाया गया',
+    failed: 'टैग बनाना असफल रहा',
+  },
+}
+
+export default translation

+ 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

@@ -0,0 +1,182 @@
+const translation = {
+  steps: {
+    header: {
+      creation: 'ज्ञान बनाएं',
+      update: 'डेटा जोड़ें',
+    },
+    one: 'डेटा स्रोत चुनें',
+    two: 'पाठ पूर्व-प्रसंस्करण और सफाई',
+    three: 'निष्पादित करें और समाप्त करें',
+  },
+  error: {
+    unavailable: 'यह ज्ञान उपलब्ध नहीं है',
+  },
+  firecrawl: {
+    configFirecrawl: '🔥फायरक्रॉल को कॉन्फ़िगर करें',
+    apiKeyPlaceholder: 'firecrawl.dev से API कुंजी, "fc-" से शुरू होती है',
+    apiKeyFormatError: 'API कुंजी "fc-" से शुरू होनी चाहिए',
+    getApiKeyLinkText: 'firecrawl.dev से अपनी API कुंजी प्राप्त करें',
+  },
+  stepOne: {
+    filePreview: 'फ़ाइल पूर्वावलोकन',
+    pagePreview: 'पृष्ठ पूर्वावलोकन',
+    dataSourceType: {
+      file: 'फ़ाइल से आयात करें',
+      notion: 'नोटियन से सिंक करें',
+      web: 'वेबसाइट से सिंक करें',
+    },
+    uploader: {
+      title: 'फ़ाइल अपलोड करें',
+      button: 'फ़ाइल खींचें और छोड़ें, या',
+      browse: 'ब्राउज़ करें',
+      tip: 'समर्थित {{supportTypes}}। प्रत्येक अधिकतम {{size}}MB।',
+      validation: {
+        typeError: 'फ़ाइल प्रकार समर्थित नहीं है',
+        size: 'फ़ाइल बहुत बड़ी है। अधिकतम {{size}}MB है',
+        count: 'एकाधिक फ़ाइलें समर्थित नहीं हैं',
+        filesNumber: 'आपने {{filesNumber}} की बैच अपलोड सीमा तक पहुँच गए हैं।',
+      },
+      cancel: 'रद्द करें',
+      change: 'बदलें',
+      failed: 'अपलोड विफल रहा',
+    },
+    notionSyncTitle: 'नोटियन कनेक्ट नहीं है',
+    notionSyncTip:
+      'नोटियन से सिंक करने के लिए, पहले नोटियन से कनेक्शन स्थापित होना चाहिए।',
+    connect: 'कनेक्ट करने जाएं',
+    button: 'अगला',
+    emptyDatasetCreation: 'मैं एक खाली ज्ञान बनाना चाहता हूं',
+    modal: {
+      title: 'एक खाली ज्ञान बनाएं',
+      tip: 'एक खाली ज्ञान में कोई दस्तावेज़ नहीं होगा, और आप कभी भी दस्तावेज़ अपलोड कर सकते हैं।',
+      input: 'ज्ञान का नाम',
+      placeholder: 'कृपया दर्ज करें',
+      nameNotEmpty: 'नाम खाली नहीं हो सकता',
+      nameLengthInvaild: 'नाम 1 से 40 वर्णों के बीच होना चाहिए',
+      cancelButton: 'रद्द करें',
+      confirmButton: 'बनाएं',
+      failed: 'बनाना विफल रहा',
+    },
+    website: {
+      fireCrawlNotConfigured: 'फायरक्रॉल कॉन्फ़िगर नहीं किया गया है',
+      fireCrawlNotConfiguredDescription:
+        'इसे उपयोग करने के लिए फायरक्रॉल को API कुंजी के साथ कॉन्फ़िगर करें।',
+      configure: 'कॉन्फ़िगर करें',
+      run: 'चलाएं',
+      firecrawlTitle: '🔥फायरक्रॉल के साथ वेब सामग्री निकालें',
+      firecrawlDoc: 'फायरक्रॉल दस्तावेज़',
+      firecrawlDocLink:
+        'https://docs.dify.ai/guides/knowledge-base/sync_from_website',
+      options: 'विकल्प',
+      crawlSubPage: 'उप-पृष्ठों को क्रॉल करें',
+      limit: 'सीमा',
+      maxDepth: 'अधिकतम गहराई',
+      excludePaths: 'पथों को बाहर रखें',
+      includeOnlyPaths: 'केवल पथों को शामिल करें',
+      extractOnlyMainContent:
+        'केवल मुख्य सामग्री निकालें (कोई हैडर, नेव्स, फुटर आदि नहीं)',
+      exceptionErrorTitle: 'फायरक्रॉल जॉब चलाते समय एक अपवाद हुआ:',
+      unknownError: 'अज्ञात त्रुटि',
+      totalPageScraped: 'कुल पृष्ठ स्क्रैप किए गए:',
+      selectAll: 'सभी चुनें',
+      resetAll: 'सभी रीसेट करें',
+      scrapTimeInfo: 'कुल {{total}} पृष्ठों को {{time}}s में स्क्रैप किया गया',
+      preview: 'पूर्वावलोकन',
+      maxDepthTooltip:
+        'प्रविष्ट URL के सापेक्ष क्रॉल करने की अधिकतम गहराई। गहराई 0 केवल प्रविष्ट url का पृष्ठ स्क्रैप करता है, गहराई 1 url और प्रविष्टURL + एक / के बाद सब कुछ स्क्रैप करता है, और इसी तरह।',
+    },
+  },
+  stepTwo: {
+    segmentation: 'खंड सेटिंग्स',
+    auto: 'स्वचालित',
+    autoDescription:
+      'स्वचालित रूप से खंड और पूर्व-प्रसंस्करण नियम सेट करें। अपरिचित उपयोगकर्ताओं को यह चुनने की सिफारिश की जाती है।',
+    custom: 'कस्टम',
+    customDescription:
+      'कस्टमाइज खंड नियम, खंड लंबाई, और पूर्व-प्रसंस्करण नियम आदि।',
+    separator: 'खंड पहचानकर्ता',
+    separatorPlaceholder:
+      'उदाहरण के लिए, नया लाइन (\\\\n) या विशेष विभाजक (जैसे "***")',
+    maxLength: 'अधिकतम खंड लंबाई',
+    overlap: 'खंड ओवरलैप',
+    overlapTip:
+      'खंड ओवरलैप सेट करने से उनके बीच की सांविधानिक प्रासंगिकता बनाए रखी जा सकती है, पुनः प्राप्ति प्रभाव को बढ़ाया जा सकता है। 10%-25% अधिकतम खंड आकार सेट करने की सिफारिश की जाती है।',
+    overlapCheck: 'खंड ओवरलैप अधिकतम खंड लंबाई से बड़ा नहीं होना चाहिए',
+    rules: 'पाठ पूर्व-प्रसंस्करण नियम',
+    removeExtraSpaces:
+      'लगातार रिक्त स्थान, नए लाइन और टैब्स को प्रतिस्थापित करें',
+    removeUrlEmails: 'सभी URL और ईमेल पतों को हटाएं',
+    removeStopwords: 'रुकावट शब्द जैसे "a", "an", "the" हटाएं',
+    preview: 'पुष्टि करें और पूर्वावलोकन करें',
+    reset: 'रीसेट',
+    indexMode: 'इंडेक्स मोड',
+    qualified: 'उच्च गुणवत्ता',
+    recommend: 'सिफारिश करें',
+    qualifiedTip:
+      'उपयोगकर्ताओं के प्रश्नों के दौरान उच्च सटीकता प्रदान करने के लिए डिफ़ॉल्ट सिस्टम एम्बेडिंग इंटरफेस को कॉल करें।',
+    warning: 'कृपया पहले मॉडल प्रदाता API कुंजी सेट करें।',
+    click: 'सेटिंग्स पर जाएं',
+    economical: 'आर्थिक',
+    economicalTip:
+      'ऑफ़लाइन वेक्टर इंजन, कीवर्ड इंडेक्स आदि का उपयोग करके सटीकता को कम करें बिना टोकन खर्च किए',
+    QATitle: 'प्रश्न और उत्तर प्रारूप में खंड करना',
+    QATip: 'इस विकल्प को सक्षम करने से अधिक टोकन खर्च होंगे',
+    QALanguage: 'का उपयोग करके खंड करना',
+    emstimateCost: 'अनुमानित लागत',
+    emstimateSegment: 'अनुमानित खंड',
+    segmentCount: 'खंड',
+    calculating: 'गणना कर रहा है...',
+    fileSource: 'दस्तावेज़ों को पूर्व-प्रसंस्करण करें',
+    notionSource: 'पृष्ठों को पूर्व-प्रसंस्करण करें',
+    websiteSource: 'वेबसाइट को पूर्व-प्रसंस्करण करें',
+    other: 'और अन्य ',
+    fileUnit: ' फ़ाइलें',
+    notionUnit: ' पृष्ठ',
+    webpageUnit: ' पृष्ठ',
+    previousStep: 'पिछला कदम',
+    nextStep: 'सहेजें और संसाधित करें',
+    save: 'सहेजें और संसाधित करें',
+    cancel: 'रद्द करें',
+    sideTipTitle: 'खंड और पूर्व-प्रसंस्करण क्यों करें?',
+    sideTipP1:
+      'पाठ डेटा को संसाधित करते समय, खंड और सफाई दो महत्वपूर्ण पूर्व-प्रसंस्करण चरण हैं।',
+    sideTipP2:
+      'खंड लंबे पाठ को पैराग्राफ में विभाजित करता है ताकि मॉडल बेहतर समझ सके। यह मॉडल परिणामों की गुणवत्ता और प्रासंगिकता में सुधार करता है।',
+    sideTipP3:
+      'सफाई अनावश्यक वर्णों और स्वरूपों को हटाती है, ज्ञान को साफ और सरल बनाने में मदद करती है।',
+    sideTipP4:
+      'उचित खंड और सफाई मॉडल प्रदर्शन में सुधार करती है, अधिक सटीक और मूल्यवान परिणाम प्रदान करती है।',
+    previewTitle: 'पूर्वावलोकन',
+    previewTitleButton: 'पूर्वावलोकन',
+    previewButton: 'प्रश्न-उत्तर प्रारूप में स्विच करना',
+    previewSwitchTipStart:
+      'वर्तमान खंड पूर्वावलोकन पाठ प्रारूप में है, प्रश्न-उत्तर प्रारूप में स्विच करने से',
+    previewSwitchTipEnd: ' अतिरिक्त टोकन खर्च होंगे',
+    characters: 'वर्ण',
+    indexSettedTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ',
+    retrivalSettedTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ',
+    datasetSettingLink: 'ज्ञान सेटिंग्स।',
+  },
+  stepThree: {
+    creationTitle: '🎉 ज्ञान बनाया गया',
+    creationContent:
+      'हमने स्वचालित रूप से ज्ञान का नाम रखा है, आप इसे किसी भी समय संशोधित कर सकते हैं',
+    label: 'ज्ञान का नाम',
+    additionTitle: '🎉 दस्तावेज़ अपलोड किया गया',
+    additionP1: 'दस्तावेज़ ज्ञान में अपलोड किया गया है',
+    additionP2: ', आप इसे ज्ञान की दस्तावेज़ सूची में पा सकते हैं।',
+    stop: 'प्रसंस्करण रोकें',
+    resume: 'प्रसंस्करण फिर से शुरू करें',
+    navTo: 'दस्तावेज़ पर जाएं',
+    sideTipTitle: 'आगे क्या करना है',
+    sideTipContent:
+      'दस्तावेज़ को इंडेक्स करने के बाद, ज्ञान को एप्लिकेशन में संदर्भ के रूप में एकीकृत किया जा सकता है, आप संदर्भ सेटिंग को प्रॉम्प्ट ऑर्केस्ट्रेशन पृष्ठ पर पा सकते हैं। आप इसे रिलीज़ के लिए एक स्वतंत्र ChatGPT इंडेक्सिंग प्लगइन के रूप में भी बना सकते हैं।',
+    modelTitle: 'क्या आप एम्बेडिंग को रोकने के लिए सुनिश्चित हैं?',
+    modelContent:
+      'यदि आपको बाद में फिर से प्रसंस्करण करने की आवश्यकता है, तो आप जहां से छोड़े थे वहीं से जारी रखेंगे।',
+    modelButtonConfirm: 'पुष्टि करें',
+    modelButtonCancel: 'रद्द करें',
+  },
+}
+
+export default translation

+ 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

@@ -0,0 +1,56 @@
+const translation = {
+  knowledge: 'ज्ञान',
+  documentCount: ' दस्तावेज़',
+  wordCount: ' के शब्द',
+  appCount: ' जुड़े हुए ऐप्स',
+  createDataset: 'ज्ञान बनाएं',
+  createDatasetIntro:
+    'अपना खुद का टेक्स्ट डेटा आयात करें या एलएलएम संदर्भ वृद्धि के लिए वेबहुक के माध्यम से वास्तविक समय में डेटा लिखें।',
+  deleteDatasetConfirmTitle: 'क्या आप यह ज्ञान हटाना चाहते हैं?',
+  deleteDatasetConfirmContent:
+    'ज्ञान को हटाना अपरिवर्तनीय है। उपयोगकर्ता अब आपके ज्ञान को प्राप्त नहीं कर पाएंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से मिटा दिए जाएंगे।',
+  datasetDeleted: 'ज्ञान हटा दिया गया',
+  datasetDeleteFailed: 'ज्ञान हटाने में विफल',
+  didYouKnow: 'क्या आप जानते हैं?',
+  intro1: 'ज्ञान को Dify एप्लिकेशन में ',
+  intro2: 'एक संदर्भ के रूप में ',
+  intro3: ',',
+  intro4: 'या यह ',
+  intro5: 'बनाया जा सकता है',
+  intro6:
+    ' एक स्वतंत्र ChatGPT इंडेक्स प्लग-इन के रूप में प्रकाशित करने के लिए',
+  unavailable: 'उपलब्ध नहीं',
+  unavailableTip:
+    'एम्बेडिंग मॉडल उपलब्ध नहीं है, डिफ़ॉल्ट एम्बेडिंग मॉडल को कॉन्फ़िगर किया जाना चाहिए',
+  datasets: 'ज्ञान',
+  datasetsApi: 'API पहुँच',
+  retrieval: {
+    semantic_search: {
+      title: 'वेक्टर खोज',
+      description:
+        'प्रश्न एम्बेडिंग्स उत्पन्न करें और उसके वेक्टर प्रतिनिधित्व के समान सबसे मिलते-जुलते टेक्स्ट चंक को खोजें।',
+    },
+    full_text_search: {
+      title: 'पूर्ण-पाठ खोज',
+      description:
+        'दस्तावेज़ में सभी शब्दों को सूचकांकित करें, उपयोगकर्ताओं को किसी भी शब्द को खोजने और उन शब्दों को युक्त टेक्स्ट चंक प्राप्त करने की अनुमति देता है।',
+    },
+    hybrid_search: {
+      title: 'हाइब्रिड खोज',
+      description:
+        'पूर्ण-पाठ खोज और वेक्टर खोजों को एक साथ निष्पादित करें, पुनः रैंकिंग करें और उपयोगकर्ता के प्रश्न के लिए सर्वोत्तम मिलान का चयन करें। रीरैंक मॉडल APIs की कॉन्फ़िगरेशन आवश्यक।',
+      recommend: 'सिफारिश',
+    },
+    invertedIndex: {
+      title: 'उल्टा सूचकांक',
+      description:
+        'उल्टा सूचकांक एक ऐसी संरचना है जो कुशल पुनर्प्राप्ति के लिए उपयोग की जाती है। यह शब्दों द्वारा व्यवस्थित होती है, प्रत्येक शब्द उन दस्तावेज़ों या वेब पेजों की ओर इंगित करता है जिनमें वह होता है।',
+    },
+    change: 'बदलें',
+    changeRetrievalMethod: 'पुनर्प्राप्ति विधि बदलें',
+  },
+  docsFailedNotice: 'दस्तावेज़ों को अनुक्रमित करने में विफल',
+  retry: 'पुनः प्रयास करें',
+}
+
+export default translation

+ 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"
     }
   ]
 }